2016-05-25 2 views
-1

Учитывая следующий shellscript:Как перенаправить ошибку перенаправления

#!/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' ... Так что я должен был знать: p! – morandg

+0

Это дублированный вопрос, я уверен ... но я его не ищу :-) – SaintHax

+0

Командная строка оболочки зависит от порядка! '2> & 1> file' не equiv, чем'> 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) 

Вы не можете писать в файл, так STDERR в Bash все еще идет в STDERR.

Смежные вопросы