繁体   English   中英

“未绑定变量”从Shell脚本命令行读取布尔参数

[英]“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM