[英]“unbound variable” reading a boolean parameter from shell script command line
我为自己找不到如此看似微不足道的东西而道歉。
我需要将多个布尔参数传递给Shell脚本(Bash),如下所示:
./script --parameter1 --parameter2
等等。
如果所有设置都被认为是true
。
在脚本的开头,我使用set -u
。
值传递的普通参数我目前执行如下操作:
# this script accepts the following arguments:
# 1. mode
# 2. window
while [[ $# > 1 ]]
do
cmdline_argument="$1"
case $cmdline_argument in
-m|--mode)
mode="$2"
shift
;;
-w|--window)
window="$2"
shift
;;
esac
shift
done
我想添加类似
-r|--repeat)
repeat=true
shift
;;
我不明白为什么它不能按预期工作。
它立即退出并出现错误:
./empire: line 450: repeat: unbound variable
450行是:
if [ "$repeat" == true ];
当您使用set -u
,取消引用没有显式分配值的任何变量是错误的。
因此,您需要在脚本顶部设置repeat=0
(或repeat=false
),或者使用取消引用的方法,该方法在未设置值时具有明确的默认行为。 参见BashFAQ#112 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.