2011-09-09 64 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"