2

これらの行に沿って何かをしたいのですが、試したほとんどの組み合わせは失敗しました:

export no_error="2 > /dev/null"
./some_command $no_error

そのコマンドを実行し、コマンドを入力する代わりに変数を使用して出力をリダイレクトするには。どうすればこれを行うことができますか?

4

1 に答える 1

1

no_errorそのように使用すると、シェルは変数を再評価しません。./some_commandコマンドライン引数として渡されるだけです。を使用することで、必要な動作を得ることができますevalbashマニュアルから:

eval [arguments]

引数は 1 つのコマンドに連結され、読み取られて実行され、その終了ステータスが の終了ステータスとして返されますeval。引数がない場合、または空の引数のみの場合、戻りステータスはゼロです。

あなたの場合の例を次に示します。

export no_error="2>/dev/null"
eval ./some_command $no_error

2と の間にスペースを入れることはできないことに注意してください>。でも、それはあなたの質問の単なるタイプミスだと思います。

于 2013-02-19T18:51:17.323 に答える