Bash脚本变量和参数传递

时间:2011-09-09 22:50:58

标签: macos bash scripting shell

我正在尝试将字符串变量传递给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变量用法的一课,但我希望在此期间能够快速得到答案。

2 个答案:

答案 0 :(得分:1)

使用类似的变量传递参数时,单引号被视为参数值的一部分。因此,您的应用程序实际上是字符串'(French)',而它可能只需要(French)。将变量分配更改为langstr="(French)"

答案 1 :(得分: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"