我正在编写一个shell脚本来驱动xcodebuild,即Xcode命令行前端。
xcodebuild通过以下方式在命令行上获取构建设置:
$ xcodebuild a=value b=value
value可以包含空格,例如,它可以是路径列表。
所以我会这样调用它:
$ xcodebuild "a=value1 value2 value3" "b=value4 value5"
xcodebuild将按照预期报告设置:
Build settings from command line:
a = value1 value2 value3
b = value4 value5但是,当按如下方式调用时:
$ xcodebuild "a=value1 b=value2"
这将被解释为单个参数,将一个值分配给build设置a:
Build settings from command line:
a = value1 b=value2现在,真正的问题是我想要写一个shell脚本,在一个变量中包含所有的构建设置,例如,我可以这样做:
SETTING_A="a=value1 value2 value3"
SETTING_B="b=value4 value5"
xcodebuild "${SETTING_A}" "${SETTING_B}"然而,这并不具有可扩展性。
我想做这样的事情:
SETTING_A="a=value1 value2 value3"
SETTING_B="b=value4 value5"
SETTINGS=${SETTING_A} ${SETTING_B}
xcodebuild ${SETTINGS}然而,上面的方法不起作用,而且无论我尝试了什么变体,我都不能将SETTING_A和SETTING_B作为命令的两个单独的单词/参数。如果我使用"$SETTINGS",它就是1;如果我只使用$SETTINGS,它就是5。
我正在寻找标准的unix shell解决方案,但如果在标准sh中做不到,我会考虑Bash或Zsh特定的解决方案。
发布于 2021-07-05 14:22:30
使用标准sh (POSIX),只需在单个设置扩展上使用set并调用"$@"来传递它们,即
SETTING_A="a=value1 value2 value3"
SETTING_B="b=value4 value5"
set -- "${SETTING_A}" "${SETTING_B}"
xcodebuild "$@"https://stackoverflow.com/questions/68251421
复制相似问题