오류: 매크로 %에 잘못된 이름이 있습니다(%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"

관련 정보