错误:宏 % 具有非法名称 (%define)

错误:宏 % 具有非法名称 (%define)

我有一个用于构建我的包的构建支持脚本。现在我想在我的规范文件中自动设置版本。我%{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"

相关内容