自定义变量
bash中变量无类型区分
aa=abc123    定义变量并赋值abc123
aa=          定义空变量或者清空变量aa,但变量还存在
export test="hello world"  设定环境变量test
export或者export -p        显示所有环境变量
declare / typeset 选项 变量名
declare 或 typeset 有同样的功能:指定变量属性。如果使用 declare 后面并没有接任何参数,那么 bash 就会主动的将所有的变量名称与内容通通叫出来,就好像使用 set 一样! 
选项:
-a 将后面的变量定义成为数组 (array)
-i 将后面的变量定义成为整数(integer)
-x 将后面的变量变成环境变量,同export 一样,
-r 将后面的变量设定为只读 ,该变量不可被更改内容,也不能 unset
-f 列出脚本中的函数
readonly用来设置只读变量
readonly 变量名
readonly -f 函数名称
readonly -a 数组变量
变量间接引用 eval var1=\$$var2

 

 

Shell支持自定义变量。

定义变量

  定义变量时,变量名不加美元符号($),如:



  代码如下:



  variableName="value"



   注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:

•首个字符必须为字母(a-z,A-Z)。
•中间不能有空格,可以使用下划线(_)。
•不能使用标点符号。
•不能使用bash里的关键字(可用help命令查看保留关键字)。

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:



 代码如下:




for skill in Ada Coffe Action Java
do
    echo "I am good at ${skill}Script"
done



 

如果不给skill变量加花括号,写成echo "I am good at $skillScript",解释器就会把$skillScript当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。

推荐给所有变量加上花括号,这是个好的编程习惯。

重新定义变量

已定义的变量,可以被重新定义,如:



代码如下:




your_name="tom"
echo $your_name

 

your_name="alibaba"
echo $your_name



 这样写是合法的,但注意,第二次赋值的时候不能写$your_name="alibaba",使用变量的时候才加美元符($)。