一、本地变量:
只对当前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的值不变。