コマンドの引数を変数に格納しています。私が欲しい最後のコマンドは次のとおりです。
mock -r myconfig --define "debug_package %{nil}" --resultdir results --rebuild mypackage.src.rpm
これが私の試みです:
set -x # for debugging
RESULTDIR=results
MOCK_CONFIG="myconfig"
MOCK_ARGS="-r $MOCK_CONFIG --define \"debug_package %{nil}\" --resultdir $RESULTDIR"
cmd="mock $MOCK_ARGS --rebuild mypackage.src.rpm"
$cmd
結果は次のとおりです。
+ RESULTDIR=results
+ MOCK_CONFIG=myconfig
+ MOCK_ARGS='-r myconfig --define "debug_package %{nil}" --resultdir results'
+ cmd='mock -r myconfig --define "debug_package %{nil}" --resultdir results --rebuild mypackage.src.rpm'
+ mock -r myconfig --define '"debug_package' '%{nil}"' --resultdir results --rebuild mypackage.src.rpm
ERROR: Bad option for '--define' ("debug_package). Use --define 'macro expr'
ご覧のとおり、--define
パラメーターの引数が正しく引用されていません。--define
私はそれだけを渡していると思いdebug_package
ますが、これは不完全です。
とMOCK_ARGS
の間のスペースをエスケープしようとしても、を定義するときに引用符のさまざまなバリエーションを試しました。debug_package
%{nil}
引用符やエスケープのどの組み合わせで、この引数リストを作成し、このスクリプトからコマンドを実行できますか?
編集:
結果のコマンドを変数に格納する理由は、ログを記録してからコマンドを実行する関数に渡されるためです。
また、変数の代わりに配列を使用する必要があることを示唆するこのFAQに出くわしました。私はアレイの実験を始めましたが、今のところ実用的な解決策はありません。