私は変数にコマンドの引数を格納しています。私がしたい最後のコマンドは次のとおりです。引用符はbash変数の中で尊重されていません
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}
の間のスペースをエスケープしようとしても。
この引数リストを作成してこのスクリプトからコマンドを実行するには、どのような引用符やエスケープを組み合わせて使用できますか?
EDIT:
私は変数に結果のコマンドを格納していた理由は、それがいくつかのログ記録を行う関数に渡されてしまうので、そのコマンドを実行しています。
また、私はthis FAQに出くわしました。これは、変数の代わりに配列を使うべきであることを示唆しています。私は配列を使って実験を始めましたが、今のところ解決策はありません。
これはhttp://stackoverflow.com/questions/954390/echo-nested-quotation-marks-in-tcshの複製のようです。 –
http://stackoverflow.com/questions/954390/echo- nested-quotation-marks-in-tcshは私のためには機能しません。 –
[bashコマンドを引用符とアスタリスクで文字列として保存する方法]の複製が可能です(http://stackoverflow.com/questions/2005192/how-to-execute-a-bash-command-stored-as-a -string-with-quotes-and-asterisk) –