私のパッケージをビルドするビルドサポートスクリプトがあります。さて、仕様ファイルにバージョンを自動的に設定したいと思います。私は%{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"