在bash shell中查找变量:
#!/bin/bash
set -o nounset
my_var=aaa
unset var
echo "$var"
由于set
命令被定义为在未设置变量的情况下返回错误,所以最后一行返回错误:
第6行:var:未绑定变量
好吧,这就是我想要的。
现在阵列也是如此:
#!/bin/bash
set -o nounset
my_array=(aaa bbb)
unset my_array
echo "${my_array[@]}"
但令我惊讶的是,最后一行并没有返回错误。我希望bash脚本在未定义数组时返回错误。
${my_array[@]}
类似于$@
,nounset
:会忽略它
CCD_ 5处理未设置的变量和除特殊参数之外的参数"@"以及"*"作为执行参数扩展时的错误。如果试图对未设置的变量或参数进行扩展,shell将打印一条错误消息,如果不是交互式的,则以非零状态退出。
返回数组大小不会被忽略。准备以下行以确保阵列未被取消设置:
: ${#my_array[@]}