Вступ до Bash Scripting
Alex Scriven
Data Scientist
Базовий оператор IF у Bash має таку структуру:
if [ CONDITION ]; then# SOME CODEelse # SOME OTHER CODEfi
Два поради:
];Можна виконати базове порівняння рядків в операторі IF:
x="Queen"if [ $x == "King" ]; thenecho "$x is a King!"else echo "$x is not a King!" fi
Queen is not a King!
Можна також використати != для «не дорівнює»
Арифметичні IF можна записувати в подвійних дужках:
x=10if (($x > 5)); then echo "$x is more than 5!" fi
10 is more than 5!
Арифметичні IF також можна писати у квадратних дужках з арифметичними прапорцями замість (>, <, =, != тощо):
-eq — «дорівнює»-ne — «не дорівнює»-lt — «менше ніж»-le — «менше або дорівнює»-gt — «більше ніж»-ge — «більше або дорівнює»Ось як відтворити попередній приклад у нотації з квадратними дужками:
x=10
if [ $x -gt 5 ]; then
echo "$x is more than 5!"
fi
10 is more than 5!
У Bash також є низка прапорців для файлів:
-e — файл існує-s — файл існує й має розмір більше нуля-r — файл існує й доступний для читання-w — файл існує й доступний для записуІ багато інших:
Щоб поєднати умови (AND) або використати OR у Bash, застосовуйте такі символи:
&& — AND|| — ORУ Bash можна ланцюжити умови так:
x=10
if [ $x -gt 5 ] && [ $x -lt 11 ]; then
echo "$x is more than 5 and less than 11!"
fi
Або використати подвійну нотацію з квадратними дужками:
x=10
if [[ $x -gt 5 && $x -lt 11 ]]; then
echo "$x is more than 5 and less than 11!"
fi
Умову можна будувати й на багатьох консольних програмах, без квадратних дужок.
Наприклад, якщо файл words.txt містить «Hello World!»:
if grep -q Hello words.txt; then
echo "Hello is inside!"
fi
Hello is inside!
Або можна викликати «оболонку в оболонці» у самій умові.
Перепишімо попередній приклад — результат буде той самий.
if $(grep -q Hello words.txt); then
echo "Hello is inside!"
fi
Hello is inside!
Вступ до Bash Scripting