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 існує і є звичайним файлом (не каталогом чи пристроєм) |