这是运行GNU bash 4.0版的FreeBSD 7.x系统。
在Bash中,该set -u
选项可以强制Shell如果遇到未设置的变量,则打印错误,如下所示:
$ set -u
$ echo $THISISUNSET
-su: THISISUNSET: unbound variable
$ echo $?
1
但是,我也遇到$ *的相同错误:
$ echo $*
-su: $*: unbound variable
$ echo $?
1
$ echo $@
-su: $@: unbound variable
Bash手册4.3.1 Set Builtin专门说set -u
忽略$ *和$ @:
-u在执行参数扩展时,将除特殊参数'@'或'*'之外的未设置变量和参数视为错误。错误消息将被写入标准错误,并且非交互式外壳将退出。
我怎样才能解决这个问题?