我有一个用于构建我的包的构建支持脚本。现在我想在我的规范文件中自动设置版本。我%{auto_version}
为此使用宏。rpmbuild -D 'auto_version 1.1' packet.spec
例如,在我的脚本中我想调用。
#!/bin/bash
version=$(version.sh)
#snip
define="'auto_version ${version}'"
build_spec () {
spec=$1
define=$2
#snip
build_output=$(rpmbuild -D "$define" $spec)
# snip
}
build_spec $build_spec "$define"
然而这会产生错误error: Macro % has illegal name (%define)
我尝试过不同的转义、引用和创建define
数组,并用${define[@]}
.
答案1
正如@tripleee正确指出的那样,原因是指令error: Macro % has illegal name (%define)
中的额外引号,例如:-D|--define
-D "\"_gpg_name $gpgname\""
正确的版本是:
-D "_gpg_name $gpgname"