Мои выводы и предложения немного отличаются от других постов. Я обнаружил, что могу использовать истину / ложь в основном так же, как и на любом «обычном» языке, без предложенного «прыжка с обручем» ... Нет необходимости в [] или явном сравнении строк ... bash, dash и busybox. Я бегал с ней и без нее ... Результаты всегда были одинаковыми. Я не уверен, о чем идет речь в оригинальных топ-постах. Может быть, времена изменились, и это все, что нужно?
Если вы установите переменную на true
, она будет иметь значение true в условном выражении. Установите его на false
, и оно оценивается как ложное. Очень прямо вперед! Единственное предостережение: переменная UNDEFINED также оценивается как true ! Было бы неплохо, если бы это произошло наоборот, но в этом-то и заключается хитрость - , вам просто нужно явно установить для ваших логических значений значение true или false .
См. Пример bash и результаты ниже. Проверьте сами, если хотите подтвердить ...
#!/bin/sh
#not yet defined...
echo "when set to ${myBool}"
if ${myBool}; then echo "it evaluates to true"; else echo "it evaluates to false"; fi;
myBool=true
echo "when set to ${myBool}"
if ${myBool}; then echo "it evaluates to true"; else echo "it evaluates to false"; fi;
myBool=false
echo "when set to ${myBool}"
if ${myBool}; then echo "it evaluates to true"; else echo "it evaluates to false"; fi;
Урожайность
when set to
it evaluates to true
when set to true
it evaluates to true
when set to false
it evaluates to false