一、本地变量:

只对当前shell进程有效,对其子shell以及其它shell均无效。

1、定义变量:[set] var_name=value;其中value支持强引用、弱引用、命令引用。

2、引用变量:${var_name}

3、撤销变量:unset var_name

3、$set:显示当前系统的所有变量(包括所有本地变量、局部变量和环境变量)。

二、局部变量:

仅对局部代码有效。

local var_name=value,value支持强引用、弱引用、命令引用。

三、环境变量:

对当前shell进程以及子shell有效。

1、定义变量:export(导出) var_name=value

2、#export:显示环境变量,也可以用命令#env,#printenv显示环境变量。

四、位置变量:

如/tmp/test.sh 2 89

$0:脚本本身,如上例/tmp/test.sh

$1:脚本的第一个参数,如上例2

$2:脚本的第一个参数,如上例89

$....$n

例:写一个脚本pos.sh,计算输入连个参数的之和。

#!/bin/bash

       echo "this sum is :$[$1+$2]"

执行./pos.sh 2 3,结果为 5

五、特殊变量:如$0:脚本名称本身

   $?:上一条命令的执行状态(0:成功;1-255:失败。)

   $$:后面再介绍

   $!:后面再介绍

   $#:当前脚本所有位置参数的个数

   $*:当前脚本所有位置参数明细

   $@:当前脚本所有位置参数明细

        例子:

        #!/bin/bash

        echo "this sum is :$[$1+$2]"

        echo $#

        echo $*

        echo $@

六、变量名命名要求:

只能使用数字、字母和下划线组成。

不能以数字开头

不能使用程序中的关键字

见名知意

七、read 交互式脚本:

例子:#!/bin/bash

      echo "Enter a Number:"

      read num1

      echo $num1

read 还有一个-p信息提示选项,则下面的脚本和上面的脚本一个意思,

      #!/bin/bash

      read -p "Enter a Number:" num1

      echo $num1

例子:read a b,就是交互式对变量a和b赋值

     如果回车后输入11 22,则a=11 b=22

     如果回车后输入11 22 33,则a=11 b=22 33,也就是说后面的值全给b


八、给变量设置默认值:

varName=${varName:-value}

如果varName不空,则其值不变,否则,varName会使用value为其值。


如:a=${a:-45},如果a的值为空,则给a赋值45,否则a的值不变。