格式 变量名=XXX
。需要注意的是,在定义的时候一定不要在等于号前后敲空格。变量名的格式跟学过的C++,Java等类似,开头不要用特殊字符。
#!/bin/bash
test="this is for test"
在使用变量的时候,变量名称前需要加美元符号$
,更为标准的是${变量名}
(下文都用这种方式,希望大家养成习惯)。例如使用echo函数进行输出时,如果不加 $ ,则会输出test,而不是变量test对应的值。
#!/bin/bash
test="this is for test"
echo ${
test}
只有在使用变量的时候才需要加 $ ,在给变量重新赋值的时候,不需要使用$ 。例如
#!/bin/bash
test="this is for test"
echo ${
test}
test="change test"
echo ${
test}
通过readonly 变量名,该变量不能被重新赋值
#!/bin/bash
test="aaa"
readonly test
test="bbb"
运行脚本之后会报错 /bin/sh: NAME: This variable is read only.
使用unset 变量名
删除变量,删除之后可以通过echo输出,输出结果为空行。
#!/bin/bash
test="this is for test"
unset test
echo ${
test}
注意,unset不能删除readonly操作过的变量。
运行shell时,会同时存在三种类型的变量:
1、局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量
2、环境变量 所有的程序,包括shell地洞的程序,都能访问环境变量,有的程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
3、shell变量 shell变量是由shell程序设置的特殊变量,shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行。
也就是说,shell变量包含局部变量中的一个或多个,可同时存在,也可以存在一个,具体需要看编写的shell程序需要实现什么功能。