shell 变量和引用
变量无类型
变量的赋值与替换
特殊变量:环境变量,位置参数
4种引用符号的意义及用法
转义符
?
变量分类:本地变量、环境变量、位置参数
本地变量,即局部变量,仅在当前shell中有效
环境变量,即系统默认定义的变量,任何shell中都可以直接使用
位置参数,用来向shell脚本传递变量,只读
-----------------------------
给变量赋值
variable=value 或 ${variable=value}
1.等号两边不可以有空格
2.value中包含空格,则必须用双引号括起来
3.变量名以字母(a~z,A~Z),数字(0~9),下划线(_)组成,不能以数字开头
?
使用定义的变量
$variable 或 ${variable}
?
变量赋值中使用另一个变量
var1="hello shell"
var2="go: $var1"
echo $var2
输出:go:hello shell
?
清除变量
unset 变量名
?
重新给变量赋值
variable+value
?
测试变量是否已经赋值
variable?value
variable:?value
?
判断变量是否已经赋值,如果没有,则对其赋值(或临时赋值),否则,使用原值
variable:=value
variable:-value 临时赋值,使用后value清除
?
设置变量的只读属性
variable=value
readonly variable 声明该变量为只读
或者,通过declare和typeset命令设置变量为只读
变量的类型
bash shell 只支持整型和字符型(默认)
shell通过判断值是否全为数字,如果是,则为数值型,否则为字符型
字符型具有默认的整型值:0
declare -i a 声明a为整型,如果a为字符串,则不变;如果将字符串与整型进行运算,则字符串按0处理
declare -r 设置变量为只读,与readonly等价
?
可以不定义变量,直接使用:
数值型默认值为0,字符型默认值为空
echo "e=$e" #未定义,直接使用,输出e=
let "e+=1"? #e=e+1
echo "e=$e" #e=1
?
环境变量
定义环境变量
第一步,对环境变量赋值(环境变量一般为大写字母):EVNIRON-VARIABLE=value
第二步,使用export声明该变量为环境变量:export EVNIRON-VARIABLE
如,设置1个环境变量,变量名为APPSPATH,值为/usr/local
APPSPATH=/usr/local
exprot APPSPATH
echo $APPSPATH
?
列出系统中的环境变量:env
输出内容很多,则使用grep抓取 env | grep xxx
?
清除环境变量
unset APPSPATH
?