如何取消 bash 中的数组?
How to unset array in bash?
In bash shell 变量:
#!/bin/bash
set -o nounset
my_var=aaa
unset var
echo "$var"
因为 set
命令被定义为 return 如果未设置变量则出错,最后一行 returns 错误:
line 6: var: unbound variable
好的,这就是我想要的。
数组也一样:
#!/bin/bash
set -o nounset
my_array=(aaa bbb)
unset my_array
echo "${my_array[@]}"
但令我惊讶的是最后一行没有 return 错误。我希望 bash 脚本在未定义数组时出现 return 错误。
${my_array[@]}
类似于 $@
,它被记录为被 nounset
忽略:
-u
Treat unset variables and parameters other than the special parameters "@" and "*" as an error when performing parameter expansion. If expansion is attempted on an unset variable or parameter, the shell prints an error message, and, if not interactive, exits with a non-zero status.
不过,返回数组大小不会被忽略。在前面添加以下行以确保数组未取消设置:
: ${#my_array[@]}
In bash shell 变量:
#!/bin/bash
set -o nounset
my_var=aaa
unset var
echo "$var"
因为 set
命令被定义为 return 如果未设置变量则出错,最后一行 returns 错误:
line 6: var: unbound variable
好的,这就是我想要的。
数组也一样:
#!/bin/bash
set -o nounset
my_array=(aaa bbb)
unset my_array
echo "${my_array[@]}"
但令我惊讶的是最后一行没有 return 错误。我希望 bash 脚本在未定义数组时出现 return 错误。
${my_array[@]}
类似于 $@
,它被记录为被 nounset
忽略:
-u
Treat unset variables and parameters other than the special parameters "@" and "*" as an error when performing parameter expansion. If expansion is attempted on an unset variable or parameter, the shell prints an error message, and, if not interactive, exits with a non-zero status.
不过,返回数组大小不会被忽略。在前面添加以下行以确保数组未取消设置:
: ${#my_array[@]}