Bash — операторы if..elif..else

Принятие решений — одна из самых фундаментальных концепций компьютерного программирования. Как и в любом другом языке программирования, ifif..elseif..elif..else и вложенные if операторы в Bash используются для выполнения кода на основе определенного условия

if

Условные операторы Bash if могут иметь различные формы. Самый простой if оператор принимает следующую форму:

if TEST-COMMAND
then
  STATEMENTS
fi

Оператор ifначинается с ifключевого слова, за которым следует условное выражение и thenключевое слово. Оператор заканчивается fi ключевым словом.

Если TEST-COMMAND оценивается как TrueSTATEMENTS выполняется. Если TEST-COMMAND возвращает False, ничего не происходит; STATEMENTS получить игнорируется .

В общем, рекомендуется всегда делать отступы в коде и разделять блоки кода пустыми строками. Большинство людей предпочитают использовать отступ в 4 или 2 пробела. Отступы и пустые строки делают ваш код более читабельным и организованным.

Давайте посмотрим на следующий пример скрипта, который проверяет, больше ли заданное число 10:

#!/bin/bash

echo -n "Enter a number: "
read VAR

if [[ $VAR -gt 10 ]]
then
  echo "The variable is greater than 10."
fi

Сохраните код в файл и запустите его из командной строки:

bash test.sh

Скрипт предложит ввести число. Если, например, вы введете 15, test команда будет оцениваться true как 15, потому что 15 больше 10, и будет выполнена echo команда внутри then предложения.

The variable is greater than 10.

if..else

Оператор Bash if..else принимает следующую форму:

if TEST-COMMAND
then
  STATEMENTS1
else
  STATEMENTS2
fi

Если TEST-COMMAND оценивается как TrueSTATEMENTS1 будет выполнено. В противном случае, если TEST-COMMAND возвращается FalseSTATEMENTS2 будет выполнено else. В заявлении может быть только одно предложение.

Давайте добавим else предложение в предыдущий пример скрипта:

#!/bin/bash

echo -n "Enter a number: "
read VAR

if [[ $VAR -gt 10 ]]
then
  echo "The variable is greater than 10."
else
  echo "The variable is equal or less than 10."
fi

Если вы запустите код и введете число, скрипт напечатает другое сообщение в зависимости от того, больше это число или меньше/равно 10

if..elif..else

Оператор Bash if..elif..else принимает следующую форму:

if TEST-COMMAND1
then
  STATEMENTS1
elif TEST-COMMAND2
then
  STATEMENTS2
else
  STATEMENTS3
fi

Если TEST-COMMAND1 оценивается как TrueSTATEMENTS1 будет выполнено. Если TEST-COMMAND2 оценивается как TrueSTATEMENTS2 будет выполнено. Если ни одна из тестовых команд не оценивается как TrueSTATEMENTS2 выполняется elif. В операторе может быть одно или несколько предложений. Пункт else является необязательным.

Условия оцениваются последовательно. Как только условие возвращается True, остальные условия не выполняются, а управление программой перемещается в конец if операторов.

Добавим elif к предыдущему скрипту предложение:

#!/bin/bash

echo -n "Enter a number: "
read VAR

if [[ $VAR -gt 10 ]]
then
  echo "The variable is greater than 10."
elif [[ $VAR -eq 10 ]]
then
  echo "The variable is equal to 10."
else
  echo "The variable is less than 10."
fi

Вложенные if операторы

Bash позволяет вкладывать if операторы в if операторы. Вы можете разместить несколько if операторов внутри другого if оператора.

Следующий скрипт предложит вам ввести три числа и вывести наибольшее число из трех чисел.

#!/bin/bash

echo -n "Enter the first number: "
read VAR1
echo -n "Enter the second number: "
read VAR2
echo -n "Enter the third number: "
read VAR3

if [[ $VAR1 -ge $VAR2 ]]
then
  if [[ $VAR1 -ge $VAR3 ]]
  then
    echo "$VAR1 is the largest number."
  else
    echo "$VAR3 is the largest number."
  fi
else
  if [[ $VAR2 -ge $VAR3 ]]
  then
    echo "$VAR2 is the largest number."
  else
    echo "$VAR3 is the largest number."
  fi
fi

Вот как будет выглядеть вывод:

Enter the first number: 4
Enter the second number: 7
Enter the third number: 2
7 is the largest number.

Несколько условий

Логические операторы OR и AND позволяют использовать в if операторах несколько условий.

Вот еще одна версия скрипта для вывода наибольшего числа из трех чисел. В этой версии вместо вложенных if операторов мы используем логический оператор AND (&&)

#!/bin/bash

echo -n "Enter the first number: "
read VAR1
echo -n "Enter the second number: "
read VAR2
echo -n "Enter the third number: "
read VAR3

if [[ $VAR1 -ge $VAR2 ]] && [[ $VAR1 -ge $VAR3 ]]
then
  echo "$VAR1 is the largest number."
elif [[ $VAR2 -ge $VAR1 ]] && [[ $VAR2 -ge $VAR3 ]]
then
  echo "$VAR2 is the largest number."
else
  echo "$VAR3 is the largest number."
fi

Оригинал статьи https://linuxize.com/post/bash-if-else-statement/

Back to Top
Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock