Wprowadzenie do skryptów Bash
Alex Scriven
Data Scientist
Instrukcje CASE mogą być wydajniejsze niż IF przy wielu lub złożonych warunkach.
Załóżmy, że chcemy sprawdzić następujące warunki i działania:
sydney — przenieść go do katalogu /sydneymelbourne lub brisbane — usunąć gocanberra — zmienić jego nazwę na IMPORTANT_filename, gdzie filename to oryginalna nazwaMożna użyć wielu instrukcji IF:
grep na pierwszym argumencie ARGV jako warunku.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 można używać wyrażeń regularnych, np. Air* dla „zaczyna się od Air" lub *hat* dla „zawiera hat".Podstawowy format instrukcji CASE:
case 'STRINGVAR' inPATTERN1) COMMAND1;; PATTERN2) COMMAND2;;
*) DEFAULT COMMAND;;
esac — słowo kończące instrukcję
Podstawowy format instrukcji CASE:
case 'STRING' in PATTERN1) COMMAND1;; PATTERN2) COMMAND2;;*) DEFAULT COMMAND;;esac
Poprzednia instrukcja 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
Nowa instrukcja CASE:
case $(cat $1) in*sydney*) mv $1 sydney/ ;; *melbourne*|*brisbane*) rm $1 ;; *canberra*) mv $1 "IMPORTANT_$1" ;;*) echo "No cities found" ;; esac
Wprowadzenie do skryptów Bash