обзор
Логические операторы в [[]] используют && и ||, что рекомендуется.
Логические операторы в [] используют -a (указывает и), -o (указывает или)
[[]]форма
Суть логических операций заключается в том, что обе стороны оператора представляют собой два истинных и ложных условия суждения, которые можно использовать для определения того, является ли содержимое строкой или числом.
Далее представлены логические операторы Shell.Предположим, что переменная a равна 10, а переменная b равна 20. Обратите внимание, что пример 双括号
:
оператор | иллюстрировать | пример |
---|---|---|
&& | Логическое И | [[ $a -lt 100 && $b -gt 100 ]] возвращает ложь |
|| | Логическое ИЛИ | [[ $a -lt 100 || $b -gt 100 ]] возвращает истину |
Пример:
#!/bin/bash
a=10
b=20
if [[ $a -lt 100 && $b -gt 100 ]]
then
echo "返回 true"
else
echo "返回 false" #打印
fi
if [[ $a -lt 100 || $b -gt 100 ]]
then
echo "返回 true" #打印
else
echo "返回 false"
fi
[] форма
В одинарных скобках могут выполняться логические операции, но также могут быть включены логическое И, логическое или синтаксическое.
В следующей таблице перечислены часто используемые логические операторы, предполагая, что переменная a равна 10, а переменная b равна 20:
оператор | иллюстрировать | пример |
---|---|---|
! | Не операция, вернуть false, если выражение истинно, иначе вернуть true. | [ !false ] возвращает истину. |
-о | Операция ИЛИ возвращает истину, если одно из выражений истинно. | [ $a -lt 20 -o $b -gt 100 ] возвращает истину. |
-а | И операция, оба выражения истинны, чтобы вернуть истину. | [ $a -lt 20 -a $b -gt 100 ] возвращает ложь. |
Пример:
#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com
a=10
b=20
if [ $a != $b ]
then
echo "$a != $b : a 不等于 b" #执行打印
else
echo "$a == $b: a 等于 b"
fi
if [ $a -lt 100 -a $b -gt 15 ]
then
echo "$a 小于 100 且 $b 大于 15 : 返回 true" #执行打印
else
echo "$a 小于 100 且 $b 大于 15 : 返回 false"
fi
if [ $a -lt 100 -o $b -gt 100 ]
then
echo "$a 小于 100 或 $b 大于 100 : 返回 true" #执行打印
else
echo "$a 小于 100 或 $b 大于 100 : 返回 false"
fi
if [ $a -lt 5 -o $b -gt 100 ]
then
echo "$a 小于 5 或 $b 大于 100 : 返回 true"
else
echo "$a 小于 5 或 $b 大于 100 : 返回 false" #执行打印
fi