2011-09-09 179 views
1

我試圖將一個字符串變量傳遞給在bash腳本的應用程序:bash腳本變量和參數傳遞

# launch app for translator to verify 
    DIR="$(cd "$(dirname "$0")" && pwd)" 

    langstr="'(English)'" 
    case $language in 
    "fr") 
     langstr="'(French)'";; 
    esac 

    echo $langstr 
    #$DIR/../Debug/MyApp.app/Contents/MacOS/MyApp -AppleLanguages '(French)' 
    $DIR/../Debug/MyApp.app/Contents/MacOS/MyApp -AppleLanguages $langstr 

回波顯示,$langstr是什麼,我希望它是:'(French)'。硬編碼語言參數的註釋行可以正常工作(應用程序以法語啓動),但用$langstr變量行代替該行會啓動英語應用程序,這可能意味着它忽略了一些方法。

我可能需要的是找到一個關於bash變量用法的課程,但我希望在此期間能夠快速得到答案。

回答

1

當您使用類似的變量傳遞參數時,單引號會被視爲參數值的一部分。所以,你的應用程序從字面上得到了字符串'(French)',而它可能只需要(French)。將變量分配更改爲langstr="(French)"

0

爲什麼在變量中需要cd命令?就這樣做吧

langstr="(English)" 
case $language in 
"fr") 
    langstr="(French)";; 
esac 

echo $langstr 
DIR=$(dirname "$0") 
$DIR/../Debug/MyApp.app/Contents/MacOS/MyApp -AppleLanguages "$langstr"