当我想要在Bash中使用参数的变量中的默认值过高时,是否有人能指出问题是什么?以下代码不起作用:
#!/bin/bash
VARIABLE1="defaultvalue1"
VARIABLE2="defaultvalue2"
# Check for first argument, if found, overrides VARIABLE1
if [ -n $1 ]; then
VARIABLE1=$1
fi
# Check for second argument, if found, overrides VARIABLE2
if [ -n $2 ]; then
VARIABLE2=$2
fi
echo "Var1: $VARIABLE1 ; Var2: $VARIABLE2"
我希望能够做到:
#./script.sh
Var1: defaultvalue1 ; Var2: defaultvalue2
#./script.sh override1
Var1: override1 ; Var2: defaultvalue2
#./script.sh override1 override2
Var1: override1 ; Var2: override2
提前致谢:)
答案 0 :(得分:7)
您错过了第一个fi
的{{1}}。但实际上你很幸运:有一种更简单的方法来做你正在做的事情。
if
来自VARIABLE1=${1:-defaultvalue1}
VARIABLE2=${2:-defaultvalue2}
:
man bash
使用默认值。如果参数未设置或为null,则替换 word 的扩展。 否则,参数的值将被替换。