/ #linux #bash 

bash: умовний оператор if..else

if

if TEST-COMMAND
then
  STATEMENTS
fi

if..else

if TEST-COMMAND
then
  STATEMENTS1
else
  STATEMENTS2
fi

if..elif..else

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

Оператори test

test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]

Щоб зробити скрипт переносимим, слід надати перевагу команді test або її скороченому запису [ ] (одинарні дужки), оскільки вона доступна у всіх оболонках POSIX.

Оновлена ​​версія команди [[ ]] (подвійні дужки) підтримується на більшості сучасних систем, які використовують bash, zsh і ksh.

Щоб заперечити тестовий вираз, використовують оператор NOT() або !.

Оператор Коментар
-n VAR true, якщо довжина VAR більша за нуль
-z VAR true, якщо VAR порожній
STRING1 = STRING2 true, якщо STRING1 і STRING2 рівні
STRING1 != STRING2 true, якщо STRING1 і STRING2 не рівні
INTEGER1 -eq INTEGER2 true, якщо INTEGER1 і INTEGER2 рівні
INTEGER1 -gt INTEGER2 true, якщо INTEGER1 більше ніж INTEGER2
INTEGER1 -lt INTEGER2 true, якщо INTEGER1 менше ніж INTEGER2
INTEGER1 -ge INTEGER2 true, якщо INTEGER1 дорівнює або більше INTEGER2
INTEGER1 -le INTEGER2 true, якщо INTEGER1 дорівнює або менше INTEGER2
-h FILE true, якщо FILE і снує і є символічним посиланням
-r FILE true, якщо FILE існує і доступний для читання
-w FILE true, якщо FILE існує і доступний для запису
-x FILE true, якщо FILE існує і є виконуваним
-d FILE true, якщо FILE існує і є каталогом
-e FILE true, якщо FILE існує і є файлом, незалежно від типу (вузол, каталог, сокет тощо)
-f FILE true , якщо файл FILE існує і є звичайним файлом (не каталогом чи пристроєм)
Author

Олександр Бобилєв

Залишаю собі право використовувати ненормативну (але інформативну) лексику там, де звичайні слова втрачають сенс і не відображають всієї палітри почуттів, від споглядання навколишньої дійсності.