如何在 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 脚本在未定义数组时返回错误。
In bash shell for variables:
#!/bin/bash
set -o nounset
my_var=aaa
unset var
echo "$var"
Because set
command is defined to return error if variable is not set, last line returns error:
line 6: var: unbound variable
OK, that is what I want.
Now the same thing with arrays:
#!/bin/bash
set -o nounset
my_array=(aaa bbb)
unset my_array
echo "${my_array[@]}"
But to my surprise last line does not return error. I would like bash script to return error when array is not defined.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
${my_array[@]}
与$@
类似,被记录为被nounset
忽略:不过,返回数组大小不会被忽略。添加以下行以确保数组未取消设置:
${my_array[@]}
is similar to$@
which is documented to be ignored bynounset
:Returning the array size is not ignored, though. Prepend the following line to make sure the array is not unset: