设置参数我经常运行一个简单的bash命令:使用bash
rpm -Uvh --define "_transaction_color 3" myPackage.rpm
其正常工作。
但现在我试图脚本它变成一个bash文件,并使其更加灵活:
#!/bin/bash
INSTALL_CMD=rpm
INSTALL_OPT="-Uvh --define '_transaction_color 3'"
${INSTALL_CMD} ${INSTALL_OPT} myPackage.rpm
然而,这继续产生错误:
error: Macro % has illegal name (%define)
错误来了从如何处理--define
和报价_transaction_color
。
我试过各种逃避,不同的措辞,甚至使INSTALL_OPT
数组,处理与${INSTALL_OPT[@]}
。
到目前为止,我的尝试没有奏效。
显然,我想要的非常简单。我只是不确定如何完成它。
如何正确使用bash来处理我的--define
问题?
您尝试过'INSTALL_OPT =' - UVH --define _transaction_color 3'',对不对? –
@ sampson-chen:试过了。 “错误:宏%_transaction_color有空体”。 – abelenky
这是因为bash将'-Uvh'和'--define'以及''_transaction_color'和'3''作为参数读取。你必须**在这种情况下使用一个数组(如Barmar的答案中所示):'INSTALL_OPT =( - Uvh --define'_transaction_color 3')'。然后'$ {INSTALL_CMD}“$ {INSTALL_OPT [$ @]}”myPackage.rpm'可以工作(用双引号,就像他提到的那样)。 –