%20%D0%B2%D0%BE%D0%B7%D0%B2%D1%80%D0%B0%D1%89%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5%20%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%D0%B0%D0%BC%20%D0%BD%D1%83%D0%B6%D0%BD%D1%8B%20%D0%B4%D0%BB%D1%8F%20if%2C%20while%20%D0%B8%20until%2C%20%D1%87%D1%82%D0%BE%D0%B1%D1%8B%20%D1%81%D0%B8%D0%B3%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D0%BE%D0%B1%20%D0%B8%D1%81%D1%82%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8%20%D0%B8%D0%BB%D0%B8%20%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8%3F.png)
Мне интересно узнать ожидаемое значение условных операторов в операторах if
, while
и until
, потому что я, очевидно, не могу заставить свои условные операторы работать правильно.
Ожидают ли они true
и false
или код выхода, т.е. 0
или {1-255}
?
решение1
Условные операторы проверяют код выхода. Ноль — это истина, а не ноль — это ложь. true
Команда истинна, поскольку возвращает нулевой ( 0
) код выхода. Аналогично, false
возвращает ненулевой код выхода (как оказалось, это 1
).
if true; then echo 'happy days'; fi
if false; then echo 'maths has just died a horrible death'; fi
true; echo "exit status is $?" # "0"
false; echo "exit status is $?" # "1"
[ 0 -eq 0 ]; echo "exit status is $?" # "0"
[ 0 -eq 1 ]; echo "exit status is $?" # "1"