变量命名规范与大部分语言一致,变量名由字母、数字、下划线组成,必须以字母或下划线开头,变量名不能是shell中的关键字,通过help命令可查看关键字。
定义
有三种方式直接定义变量:
var=value
var='value'
var="value"
var是变量名,value是赋给变量的值。如果value不包含任何空白符(空格、Tab等)则可以不使用引号。如果包含任何空白符则必须用引号将value包围起来。
使用单引号和双引号定义变量时,有时是有区别的。当以单引号包围变量值时,不会对单引号中的内容进行解析,如变量、命令等,适合定义纯字符串时使用。使用双引号包围变量值时,会对双引号中的内容进行解析,适合字符串中带有变量和命令并想将其解析后输出事使用。
var=value
var1='${var}'
var2="${var}"
echo ${var1}
echo ${var2}
如上输出为:
${var}
value
命令替换
还可以通过命令替换将命令的结果赋值给变量,命令替换有两种方式:
var=`command`
var=$(command)
第一种方式是用反引号“`”将命令包围起来,第二种方式是用“$()”将命令包围起来。第一种方式比较简洁,但容易与引号产生混淆。第二种方式较第一种方式更直观明显。
var=`date`
echo ${var}
var=$(date)
echo ${var}
使用
要使用定义过的变量,只需要在变量名前加上“$”即可,如$var。还可以用“{}”将变量名包围起来,以便明确变量名边界,如${var},虽然“{}”是可选的,但是加上“{}”是一个良好的习惯,可以防止解释器解析错误。
echo $var
echo ${var}
修改
要修改已定义的变量值,只需要再次赋值即可,赋值时不需要加“$”。
var=value
echo ${var}
var=value1
echo ${var}
只读
通过readonly命令可以将变量变为只读变量,只读变量不能修改也不能删除,否则会报错。
var=value
readonly var
var=value1
如上会报错:var: readonly variable。
删除
删除变量可以使用unset命令,变量删除后不能再次使用,要注意的是unset不能删除只读变量。
var=value
unset var
echo ${var}
如上,删除变量后不会有任何输出。
var=value
readonly var
unset var
如上会报错:unset: var: cannot unset: readonly variable。