2016-05-25 6 views
-1

をリダイレクトします方法次のシェルスクリプトを考えると、リダイレクトエラー

#!/bin/bash 
echo test > /usr/lib/permDenied 2>&1 > /dev/null 
echo $? 

これは私に次のエラーを与える:

$ ./test.sh 
./test.sh: line 2: /usr/lib/permDenied: Permission denied 
1 

がどのようにエラーがサイレントにすることができ、同様のエラーコードを取得しますか?

+0

Arfff「echo test 2」/ dev/null>/usr/lib/permDenied'というわけではありません。 – morandg

+0

これは重複した質問ですが、私はそれを探していません:-) – SaintHax

+0

シェルのコマンドラインは順序に依存しています! '2>&1> file'は'> file 2>&1'と等価ではありません!! http://stackoverflow.com/questions/818255/in-the-shell-what-does-21-mean/16283739#16283739を参照してください。 –

答えて

-1

検索でこれが見つかるはずですが、なぜそれが将来的に機能しないのかについての説明があります。

echo test > /usr/lib/permDenied 2>&1 > /dev/null

You first assign STDOUT to a file (STDOUT -> file) 
You then assign STDERR to STDOUT (STDOUT -> file; STDERR -> file) 
You then assign STDOUT to /dev/null (STDOUT ->/dev/null; STDERR -> file) 

あなたはファイルに書き込むことができないので、bashののSTDERRはまだSTDERRに行きます。

関連する問題