【发布时间】:2021-09-15 22:57:35
【问题描述】:
我正在编写一个 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 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 特定的解决方案。
【问题讨论】:
标签: sh