#bash #if-statement #conditional-statements #script
Вопрос:
Я создаю сценарий bash, в котором есть 2 условия в операторе IF, связанные оператором логики AND, но он жалуется при выполнении. Просто на заметку, если я выполню каждое условие в нем уникально, если оба работают просто отлично. Проблема возникает, когда я пытаюсь выполнить оба действия оператором-a (И). Вот он:
if [[ "$1" =~ ".com" -a test "$#" -eq 1 ]]
then
echo "olalá"
fi
Я буду признателен за любой совет по этому вопросу.
Комментарии:
1. Вам не нужна эта
test
команда там; вы уже находитесь в середине логического выражения.if [[ "$1" =~ ".com" -a "$#" -eq 1 ]]
Ответ №1:
-a
является оператором И в [ ]
тестовом выражении, но [[ ]]
вместо этого используются условные выражения amp;amp;
. Кроме того, в выражении лица есть ошибка, которой там вообще не место. test
Вот исправленная версия:
if [[ "$1" =~ ".com" amp;amp; "$#" -eq 1 ]]
Вы могли бы эквивалентно использовать два отдельных [[ ]]
выражения и использовать amp;amp;
между ними:
if [[ "$1" =~ ".com" ]] amp;amp; [[ "$#" -eq 1 ]]
(Если бы вы использовали [ ]
выражения, это был бы предпочтительный метод из-за двусмысленностей в синтаксисе, включающем -a
, -o
, и тому подобное; но с [[ ]]
, двусмысленности нет, и любой метод работает нормально.)