Давайте опишем их здесь.
Прежде всего, есть в основном 3 различных метода испытаний
[ EXPRESSION ]
, что в точности совпадает с test EXPRESSION
[[ EXPRESSION ]]
(( EXPRESSION ))
, что в точности совпадает с let "EXPRESSION"
Давайте углубимся в детали:
test
Это дедушка тестовых команд.Даже если ваша оболочка не поддерживает ее, практически все команды Unix по-прежнему имеют команду /usr/bin/test
.Таким образом, вызов test
запустит встроенный или двоичный файл как запасной вариант.Введите $ type test
, чтобы увидеть, какая версия используется.Аналогично для [
.
В большинстве основных случаев этого должно быть достаточно для проведения тестирования.
if [ "$a" = test -o "$a" = Test ];
if test "$a" = test -o "$a" = Test;
Если вам нужно больше энергии, тогда есть ...
[[]]
Это специальное предложение для bash.Не каждая оболочка должна поддерживать это, и нет двоичного отступления.Он предоставляет более мощный механизм сравнения, в частности сопоставление с шаблоном и сопоставление с регулярным выражением.
if [[ "$a" == [Tt]es? ]]; # pattern
if [[ "$a" =~ ^[Tt]es.$ ]]; # RE
(())
Это специальная программа bash, используемая для арифметических выражений,и верно, если результат вычисления не равен нулю.Не каждая оболочка должна поддерживать это, и здесь нет двоичного отступления.
if (( x * (1 + x++) ));
if let "x * (1 + x++)";
Обратите внимание, что вы можете опустить знак $
при ссылке на переменные в (( ... ))
или let
.