Introdução ao Bash Scripting
Alex Scriven
Data Scientist
Instruções CASE podem ser mais eficientes que IF quando há várias condições ou condições complexas.
Suponha que você queira testar as condições e ações a seguir:
sydney, mova-o para o diretório /sydneymelbourne ou brisbane, exclua-ocanberra, renomeie para IMPORTANT_filename, onde filename era o nome originalVocê poderia construir várias instruções IF assim:
grep no primeiro argumento de ARGV para a condicional.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, como Air* para "começa com Air" ou *hat* para "contém hat".Formato básico de CASE:
case 'STRINGVAR' inPATTERN1) COMMAND1;; PATTERN2) COMMAND2;;
*) DEFAULT COMMAND;;
esac Por fim, a palavra de fechamento é "esac"
Formato básico de CASE:
case 'STRING' in PATTERN1) COMMAND1;; PATTERN2) COMMAND2;;*) DEFAULT COMMAND;;esac
Nosso IF antigo:
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
Nosso novo CASE:
case $(cat $1) in*sydney*) mv $1 sydney/ ;; *melbourne*|*brisbane*) rm $1 ;; *canberra*) mv $1 "IMPORTANT_$1" ;;*) echo "No cities found" ;; esac
Introdução ao Bash Scripting