Introduktion till Bash-skriptning
Alex Scriven
Data Scientist
CASE-satser kan vara mer optimala än IF-satser när du har flera eller komplexa villkor.
Säg att du vill testa följande villkor och åtgärder:
sydney – flytta den till katalogen /sydneymelbourne eller brisbane – ta bort dencanberra – byt namn till IMPORTANT_filename där filename är det ursprungliga filnamnetDu kan konstruera flera IF-satser så här:
grep på det första ARGV-argumentet för villkoret.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, till exempel Air* för "börjar med Air" eller *hat* för "innehåller hat".Grundläggande format för CASE-satser:
case 'STRINGVAR' inPATTERN1) COMMAND1;; PATTERN2) COMMAND2;;
*) DEFAULT COMMAND;;
esac Avslutningsordet är "esac"
Grundläggande format för CASE-satser:
case 'STRING' in PATTERN1) COMMAND1;; PATTERN2) COMMAND2;;*) DEFAULT COMMAND;;esac
Vår gamla IF-sats:
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
Vår nya CASE-sats:
case $(cat $1) in*sydney*) mv $1 sydney/ ;; *melbourne*|*brisbane*) rm $1 ;; *canberra*) mv $1 "IMPORTANT_$1" ;;*) echo "No cities found" ;; esac
Introduktion till Bash-skriptning