Вступ до Bash Scripting
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 Нарешті, завершальне слово — «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 Scripting