2010-09-04 67 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}
使用默認值。如果參數是設置或者爲空,的膨脹取代。 否則,代入參數的值。