Иногда вам может понадобиться использовать булевы переменные в сценарии оболочки. В этой статье мы узнаем, как объявлять, устанавливать и оценивать булевы переменные в сценарии Bash. Мы узнаем, как установить переменную в булево значение, а также как проверить, является ли переменная булевой.
Как использовать булевы переменные в сценарии оболочки
В сценариях оболочки вам не нужно объявлять переменные. Вы можете напрямую присвоить им значения, и они будут оценены во время выполнения. Вот простой синтаксис для установки переменных в булевы значения.
1 | var = boolean_value |
Вот два примера установки переменной abc в значения true и false.
1 2 | abc = true abc = false |
Далее мы узнаем, как оценить значение булевой переменной.
1 2 3 4 | abc = true if [ "$abc" = true ] ; then echo 'abc - true' fi |
В приведенном выше примере мы присваиваем переменной значение True. Мы используем условие if, чтобы проверить, является ли переменная истинной. У вас может возникнуть искушение использовать следующий синтаксис для проверки истинности переменной shell, как это делается в других языках программирования.
1 2 3 4 | abc=true if $abc ; then echo 'abc - true' fi |
Избегайте описанного выше способа проверки булевой переменной в сценарии оболочки. Это связано с тем, что bash shell имеет встроенное значение true для каждой назначенной переменной, независимо от ее значения. Например, следующие утверждения также приведут к тому, что вышеприведенное условие будет оценено как true.
1 2 3 4 5 6 7 8 9 10 11 12 | abc='' if $abc ; then echo 'abc - true' fi abc='xyz' if $abc ; then echo 'abc is true' fi abc=[какая-то команда] if $abc ; then echo 'abc is true' fi |
В каждом из трех вышеприведенных примеров условие if оценивается в true и выполняет вложенный скрипт. Это происходит потому, что в таких случаях bash проверяет только то, установлена ли переменная оболочки или нет, а не ее присвоенное значение. Поэтому это может быть небезопасно, когда даже правильная команда может оказаться оцененной, как показано в примере 3.
Вот несколько эквивалентных примеров проверки истинности переменной.
1 2 3 4 5 6 7 8 9 10 11 12 | abc=true if [ "$abc" = true ]; then if [ [ "$abc" = "true" ]; then if [[ "$abc" = true ]]; then if [[ "$abc" = "true" ]]; then if [[ "$abc" == true ]]; then if [[ "$abc" == "true" ]]; then if test "$abc" = true; then if test "$abc" = "true"; then |
Заключение
В этой статье мы узнали, как установить переменную shell в булево значение, а также оценить его.