我经常运行一个简单的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
正确处理我的论点?
Bar*_*mar 12
问题是变量替换后不处理引号.所以看起来你正在尝试定义一个名为的宏'_transaction_color
.
尝试使用数组:
INSTALL_OPT=(-Uvh --define '_transaction_color 3')
Run Code Online (Sandbox Code Playgroud)
然后:
"$INSTALL_CMD" "${INSTALL_OPT[@]}" myPackage.rpm
Run Code Online (Sandbox Code Playgroud)
重要的是放入${INSTALL_OPT[@]}
双引号以获得重新报价.
归档时间: |
|
查看次数: |
1694 次 |
最近记录: |