我将参数存储在变量中的命令中。我想要的最后一个命令是:
mock -r myconfig --define "debug_package %{nil}" --resultdir results --rebuild mypackage.src.rpm
这是我的尝试:
set -x # for debugging
RESULTDIR=results
MOCK_CONFIG="myconfig"
MOCK_ARGS="-r $MOCK_CONFIG --define \"debug_package %{nil}\" --resultdir $RESULTDIR"
cmd="mock $MOCK_ARGS --rebuild mypackage.src.rpm"
$cmd
结果是:
+ RESULTDIR=results
+ MOCK_CONFIG=myconfig
+ MOCK_ARGS='-r myconfig --define "debug_package %{nil}" --resultdir results'
+ cmd='mock -r myconfig --define "debug_package %{nil}" --resultdir results --rebuild mypackage.src.rpm'
+ mock -r myconfig --define '"debug_package' '%{nil}"' --resultdir results --rebuild mypackage.src.rpm
ERROR: Bad option for '--define' ("debug_package). Use --define 'macro expr'
如您所见,参数的--define
参数没有被正确引用。--define
认为我只是通过它debug_package
,这是不完整的。
我在定义时尝试了引号的各种变化MOCK_ARGS
,甚至试图避开和之间的debug_package
空格%{nil}
。
什么样的引号和/或转义组合允许我构建这个参数列表并从这个脚本执行命令?
编辑:
我将生成的命令存储在变量中的原因是因为它最终被传递给一个执行一些日志记录的函数,然后执行该命令。
另外,我遇到了这个常见问题解答,它建议我应该使用数组而不是变量。我已经开始尝试使用数组,但到目前为止还没有一个可行的解决方案。