我正在尝试对我的包在 make 命令中的目录进行后期绑定。基本上, WITH_OPTIONS 命令行包含一个以空格分隔的链接选项列表,类似于配置脚本。问题是目录绑定较晚,在解析此脚本的命令行之后,所以我需要评估模板字符串以获得正确的变量绑定。通过谷歌搜索和阅读 Bash 常见问题,我能得到的最接近的结果,尤其是第 50 条是这样的:
MAKE_INSTALL="make install"
TEMPLATE=('--first=$a' '--second=$b' '--third=$a')
# Parse Parameters
a=/first/path
b=/second/path
TEMPLATE_REPL=$( eval echo ${TEMPLATE[@]} )
CMD="$MAKE_INSTALL WITH_OPTIONS=\"$TEMPLATE_REPL\""
$CMD
我期望 $CMD 包含的是一个带有一个命令和 2 个参数的字符串:
make install WITH_OPTIONS="--first=/first/path --second=/second/path --third=/first/path"
但是,我无法让 bash 将引号中的部分保持在一起,因此它一直将其解析为:
make install 'WITH_OPTIONS="--first=/first/path' '--second=/second/path' '--third=/first/path"'
这显然是完全错误的,并且在执行时会导致错误的命令行。
我错过了什么?如何将引号之间的位保留为一个参数,而不是 3?