내 패키지를 빌드하는 빌드 지원 스크립트가 있습니다. 이제 사양 파일에 버전을 자동으로 설정하고 싶습니다. 저는 %{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"