Shell变量

变量设置


Variable-name=value : 设置实际值到 variable-name
Variable-name+value : 如果设置了 variable-name,则重设其值
Variable-name:?value : 如果未设置 variable-name,显示未定义用户错误信息
Variable-name?value : 如果未设置 variable-name,显示系统错误信息
Variable-name:=value : 如果未设置 variable-name,设置其值
Variable-name:-value : 同上,但是取值并不设置到 variable-name,可以被替换

有时要测试是否已设置或初始化变量。如果未设置或初始化,就可以使用另一值。此命
令格式为:
${variable:-value}
意即如果设置了变量值,则使用它,如果未设置,则取新值。例如:

$COLOUR="blue"

$echo "The sky is ${COLOUR:—"grey"}"

The sky is blue

现在用unset来清除变量

$unset COLOUR

$echo "The sky is ${COLOUR:—"grey"}"  #但并未设置COLOUR变量

The sky is grey

但是上面的变量并未设置,如需设置:

${variable:=value}

$echo "The sky is ${COLOUR:=“grey”}  #就设置了COLOUR变量

也可以编写脚本测试变量是否取值,然后返回带有系统错误信息的结果。下面的例子测
试变量file是否取值。

$echo "The file ${file:?}"

bash: file: 参数为空或未设置

以上结果可读性不好,但是可以加入自己的脚本以增加可读性。

$echo "The file ${file:?"does not exsist"}"

bash: file: does not exsisted

只读变量设置


readonly variable-name


$readonly COLOUR #就设置为了只读,不能改变

环境变量


$ env   #显示环境变量

嵌入shell变量


Brourne shell 有一些预留的环境变量名,这些变量名不能用作其他用途。通常在
/etc/profile中建立这些嵌入的环境变量,但也不完全是,这取决于用户自己。以下是嵌入 shell
变量列表。

1. EXINIT
EXINIT变量保存使用 v i编辑器时的初始化选项。例如,调用 v i时,要显示行号,命令为:
$ EXINIT='set nu';export EXINIT

2.HOME

设置了HOME目录,可以简单使用 cd命令进入它

3.IFS

IFS用作shell指定的缺省域分隔符。原理上讲域分隔符可以是任意字符,但缺省通常为空格、新行或 t a b键。IFS在分隔文件或变量中各域时很有用。

还有很多,不一一列举

标签:Linux, Shell

评论已关闭