如何在bash中取消设置数组



在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[@]}

最新更新