我将命令的参数存储在一个变量中。我想要的最终命令是:
正如您所看到的,对于
我已经尝试了在定义
哪种引号和/或转义的组合允许我构建此参数列表并从此脚本执行命令?
编辑:
我将生成的命令存储在变量中的原因是因为它最终会传递到一个执行一些日志记录,然后执行命令的函数中。
另外,我遇到了这个常见问题解答,该解答建议我使用数组而不是变量。 我已经开始尝试使用数组,但目前还没有可行的解决方案。
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}
之间的空格。哪种引号和/或转义的组合允许我构建此参数列表并从此脚本执行命令?
编辑:
我将生成的命令存储在变量中的原因是因为它最终会传递到一个执行一些日志记录,然后执行命令的函数中。
另外,我遇到了这个常见问题解答,该解答建议我使用数组而不是变量。 我已经开始尝试使用数组,但目前还没有可行的解决方案。