带参数的可怕的预定义Bash变量

时间:2010-09-04 07:39:50

标签: bash variables arguments override

当我想要在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

提前致谢:)

1 个答案:

答案 0 :(得分:7)

您错过了第一个fi的{​​{1}}。但实际上你很幸运:有一种更简单的方法来做你正在做的事情。

if

来自VARIABLE1=${1:-defaultvalue1} VARIABLE2=${2:-defaultvalue2}

  

man bash
  使用默认值。如果参数未设置或为null,则替换 word 的扩展。                 否则,参数的值将被替换。