Introduzione al Bash Scripting
Alex Scriven
Data Scientist
I blocchi CASE possono essere più efficienti degli IF con condizioni multiple o complesse.
Supponiamo di voler testare queste condizioni e azioni:
sydney, spostalo nella directory /sydneymelbourne o brisbane, eliminalocanberra, rinominalo in IMPORTANT_filename, dove filename è il nome originalePotresti costruire più IF così:
grep sul primo argomento ARGV per la condizione.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, ad es. Air* per 'inizia con Air' o *hat* per 'contiene hat'.Formato base di CASE:
case 'STRINGVAR' inPATTERN1) COMMAND1;; PATTERN2) COMMAND2;;
*) DEFAULT COMMAND;;
esac Infine, la parola di chiusura è 'esac'
Formato base di CASE:
case 'STRING' in PATTERN1) COMMAND1;; PATTERN2) COMMAND2;;*) DEFAULT COMMAND;;esac
Il nostro vecchio 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
Il nostro nuovo CASE:
case $(cat $1) in*sydney*) mv $1 sydney/ ;; *melbourne*|*brisbane*) rm $1 ;; *canberra*) mv $1 "IMPORTANT_$1" ;;*) echo "No cities found" ;; esac
Introduzione al Bash Scripting