📙
📙
📙
📙
Shell
搜索文档…
变量

定义变量

定义变量时,直接使用 <变量名>=<变量值> 就直接声明了一个变量
name="name"
变量名和等号之间不能有空格,否则bash会认为变量名是一个命令
变量的命名遵守以下规范
  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
  • 中间不能有空格,可以使用下划线(_)。
  • 不能使用标点符号。
  • 不能使用bash里的关键字。
除了显式地直接赋值,还可以用命令语句给变量赋值,如:
name=`uname -a`
或
name=$(uname -a)

使用变量

使用一个定义过的变量,只要在变量名前面加美元符号即可,如:
name="name"
echo $name
echo ${name}
也可以直接在字符串中引用变量
name=`uname -a`
echo "This is uname:${name}"
在字符串中引用时,建议加上 {} 目的是为了区分变量名的边界,例如:
echo "This is uname:$nameResult"
此时会认为 nameResult 是一个完整的变量名,导致结果错误

只读变量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
name="name"
readonly name
此时再次给name赋值,会有错误提示,当一个变量设置readonly后,无法恢复为可写状态,确保变量使用情况下,再使用此设置

删除变量

使用 unset 命令可以删除变量。语法:
unset name
变量被删除后不能再次使用。unset 命令不能删除只读变量。
删除后,如果想继续使用变量,重新给变量赋值就可以。

变量命名空间

  • 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
  • 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
  • shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行