<Предыдущая | Содержание: | Следующая>
Более современная версия теста
Последние версии колотить включить составную команду, которая действует как расширенная замена тестXNUMX. Он использует следующий синтаксис:
[[ выражение ]]
где, типа тестXNUMX, выражение это выражение, которое дает либо истинный, либо ложный результат. [[]] команда очень похожа на тестXNUMX (он поддерживает все свои выражения), но
добавляет важное новое строковое выражение:
string1 =~ регулярное выражение
который возвращает истину, если string1 соответствует расширенному регулярному выражению регулярное выражение. Это открывает массу возможностей для выполнения таких задач, как проверка данных. В нашем предыдущем примере целочисленных выражений сценарий завершится ошибкой, если константа INT содержало что угодно, кроме целого числа. Скрипту нужен способ проверки того, что константа содержит целое число. С использованием [[]] с =~ оператор строкового выражения, мы могли бы улучшить скрипт следующим образом:
#! / Bin / Баш
# test-integer2: оценить значение целого числа.
ИНТ = -5
если [["$ INT" = ~ ^ -? [0-9] + $]]; тогда
если [ $INT -eq 0 ]; затем отобразите «INT равно нулю».
еще
если [$ INT -lt 0]; затем эхо «INT отрицательно».
еще
echo "INT положительный."
fi
если [$ ((INT% 2)) -экв 0]; затем эхо "INT четное".
еще
echo "INT нечетный."
fi
fi
еще
echo "INT не является целым числом." > & 2 выход 1
fi
#! / Bin / Баш
# test-integer2: оценить значение целого числа.
ИНТ = -5
если [["$ INT" = ~ ^ -? [0-9] + $]]; тогда
если [ $INT -eq 0 ]; затем отобразите «INT равно нулю».
еще
если [$ INT -lt 0]; затем эхо «INT отрицательно».
еще
echo "INT положительный."
fi
если [$ ((INT% 2)) -экв 0]; затем эхо "INT четное".
еще
echo "INT нечетный."
fi
fi
еще
echo "INT не является целым числом." > & 2 выход 1
fi
Применяя регулярное выражение, мы можем ограничить значение INT использовать только строки, начинающиеся с необязательного знака минус, за которым следует одна или несколько цифр. Это выражение также исключает возможность пустых значений.
Еще одна дополнительная функция [[]] в том, что == Оператор поддерживает сопоставление с образцом так же, как и расширение пути. Например:
[я @ linuxbox ~] $ ФАЙЛ=foo.bar
[я @ linuxbox ~] $ ФАЙЛ=foo.bar
Более современная версия теста
[я @ linuxbox ~] $ если [[ $FILE == foo.* ]]; затем
> echo "$FILE соответствует шаблону 'foo.*'"
> fi
foo.bar соответствует шаблону «foo.*»
[я @ linuxbox ~] $ если [[ $FILE == foo.* ]]; затем
> echo "$FILE соответствует шаблону 'foo.*'"
> fi
foo.bar соответствует шаблону «foo.*»
Это делает [[]] полезно для оценки файлов и путей.