2010-09-04 72 views
3

有人能指出我出来是什么,当我想overrible在一个变量的默认值在Bash中参数的问题?下面的代码不起作用:Overrible预定义的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

注意的前景:“不工作”是不是非常有帮助。如果您对错误消息和行为的具体说明与预期的不同,那更好。 – 2010-09-04 15:27:52

回答

7

你缺少fi第一个if。但实际上你很幸运:有一个更简单的方法来做你正在做的事情。

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

man bash

${parameter:-word}
使用默认值。如果参数是设置或者为空,的膨胀取代。 否则,代入参数的值。