2017-01-05 1 views

ответ

3

Как указано в man bash:

Если зарезервированное слово ! предшествует трубопровод, статус выхода из этого трубопровода является логическим отрицанием статуса выхода, как описано выше.

1

Исправить.

Вот пример кода:

anny ~> if ! grep $USER /etc/passwd 
More input> then echo "your user account is not managed locally"; fi 
your user account is not managed locally 

anny > echo $? 
0 

anny > 

Источник: http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html

+0

'Эхо $' всегда будет возвращать '0', так как статус выхода из 'если ..., то ... ц? 'block равен 0. Попробуйте использовать его с другой комбинацией, и вы увидите, что оно всегда будет равно 0, даже если инструкция' if' нарушена, например, синтаксические ошибки. – alvits

+2

Короче говоря, статус выхода блока if if fi является статусом выхода списка внутри блока, а не статусом выхода условия. – alvits

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