Введение в Bash-скриптинг
Alex Scriven
Data Scientist
Операторы CASE удобнее операторов IF при наличии нескольких сложных условий.
Предположим, нужно проверить следующие условия:
sydney — переместить его в каталог /sydneymelbourne или brisbane — удалить егоcanberra — переименовать в IMPORTANT_filename, где filename — исходное имя файлаМожно написать несколько операторов IF:
grep для первого аргумента ARGV в условии.if grep -q 'sydney' $1; then
mv $1 sydney/
fi
if grep -q 'melbourne|brisbane' $1; then
rm $1
fi
if grep -q 'canberra' $1; then
mv $1 "IMPORTANT_$1"
fi
PATTERN можно использовать регулярные выражения: например, Air* — «начинается с Air», *hat* — «содержит hat».Базовый синтаксис оператора CASE:
case 'STRINGVAR' inPATTERN1) COMMAND1;; PATTERN2) COMMAND2;;
*) DEFAULT COMMAND;;
esac — завершающее слово оператора
Базовый синтаксис оператора CASE:
case 'STRING' in PATTERN1) COMMAND1;; PATTERN2) COMMAND2;;*) DEFAULT COMMAND;;esac
Прежний оператор IF:
if grep -q 'sydney' $1; then
mv $1 sydney/
fi
if grep -q 'melbourne|brisbane' $1; then
rm $1
fi
if grep -q 'canberra' $1; then
mv $1 "IMPORTANT_$1"
fi
Новый оператор CASE:
case $(cat $1) in*sydney*) mv $1 sydney/ ;; *melbourne*|*brisbane*) rm $1 ;; *canberra*) mv $1 "IMPORTANT_$1" ;;*) echo "No cities found" ;; esac
Введение в Bash-скриптинг