震惊!shell编程竟如此简单

概述:

  • Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
  • Shell还是一个功能相当强大的编程语言,易编 写、易调试、灵活性强。Shell是解释执行的脚本语言,在Shell中可以调用Linux系统命令。
    震惊!shell编程竟如此简单_第1张图片

shell脚本的执行方式

  • echo输出命令
基本语法:echo [选项] [输出内容]
  • 选项
-e:支持反斜线控制的字符转换

震惊!shell编程竟如此简单_第2张图片

  • 案例
[atguigu@hadoop102 sbin]$ echo "helloworld"
helloworld
  • 第一个Shell脚本
<-- 需求:创建一个Shell脚本,输出helloworld -->
[atguigu@hadoop102 datas]$ touch helloworld.sh
[atguigu@hadoop102 datas]$ vi helloworld.sh

<-- 在helloworld.sh中输入如下内容 -->
#!/bin/bash   
echo "helloworld"
  • 脚本的常用执行方式

  • 第一种:输入脚本的绝对路径或相对路径

<-- 首先要赋予helloworld.sh 脚本的+x权限 -->
[atguigu@hadoop102 datas]$ chmod 777 helloworld.sh

<-- 执行脚本 -->
/root/helloWorld.sh
	./helloWorld.sh
  • 第二种:bash或sh+脚本(不用赋予脚本+x权限)
sh /root/helloWorld.sh
sh helloWorld.sh

shell中的变量

  • Linux Shell中的变量分为“系统变量”和“用户自定义变量”,可以通过set命令查看系统变量。
  • 系统变量:$HOME$PWD$SHELL$USER等等
  • 显示当前shell中所有变量:set

定义变量

  • 基本语法:变量=值
  • 变量定义规则
  • 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
    
  • 等号两侧不能有空格
    
  • 变量名称一般习惯为大写
    
  • 双引号和单引号有区别,双引号仅将空格脱意,单引号会将所有特殊字符脱意
    
  • 案例
  • 定义变量A:A=8
  • 撤销变量A:unset A
  • 声明静态的变量B=2,不能unset:readonly B=2
  • 可把变量提升为全局环境变量,可供其他shell程序使用:export 变量名

将命令的返回值赋给变量

  • A=ls -la:反引号,运行里面的命令,并把结果返回给变量A
  • A=$(ls -la):等价于反引号

设置环境变量

  • 基本语法:
export 变量名=变量值:(功能描述:设置环境变量的值)
echo $变量名:(功能描述:查询环境变量的值)
source 配置文件:(功能描述:让修改后的配置信息立即生效)
  • 案例:
<--/etc/profile文件中定义JAVA_HOME环境变量 -->
export JAVA_HOME=/opt/module/jdk1.7.0_79
export PATH=$PATH:$JAVA_HOME/bin
  • 查看环境变量JAVA_HOME的值
[atguigu@hadoop102 datas]$ echo $JAVA_HOME
/opt/module/jdk1.7.0_79

位置参数变量

  • 基本语法
    $n:(功能描述:n为数字,$0代表命令本身,$1- 9 代 表 第 一 到 第 九 个 参 数 , 十 以 上 的 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 包 含 , 如 9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如 9{10})

    $* :(功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)

    $@:(功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)

    $#:(功能描述:这个变量代表命令行中所有参数的个数)

  • 案例

<-- 计算输入的参数1和参数2的两个数的和,并输出到控制台 -->
#!/bin/bash 
num1=$1 
num2=$2 
sum=$(( $num1 + $num2)) 
#变量sum的和是num1加num2 
echo $sum 
#打印变量sum的值

你可能感兴趣的:(Linux)