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