我经常运行一个简单的bash命令:
rpm -Uvh --define "_transaction_color 3" myPackage.rpm
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.
但现在我正在尝试将其编写为bash文件,并使其更灵活:
#!/bin/bash
INSTALL_CMD=rpm
INSTALL_OPT="-Uvh --define '_transaction_color 3'"
${INSTALL_CMD} ${INSTALL_OPT} myPackage.rpm
Run Code Online (Sandbox Code Playgroud)
但是,这会产生错误:
error: Macro % has illegal name (%define)
Run Code Online (Sandbox Code Playgroud)
错误来自如何处理--define和引用_transaction_color.
我尝试过各种各样的逃避,不同的措辞,甚至制作INSTALL_OPT一个数组,处理${INSTALL_OPT[@]}.
到目前为止,我的尝试没有奏效.
显然,我想要的是非常简单.我只是不确定如何实现它.
我怎样才能让bash --define正确处理我的论点?