用bash设置参数

abe*_*nky 7 unix linux bash

我经常运行一个简单的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 次

最近记录:

7 年,6 月 前