Introduction au scripting Bash
Alex Scriven
Data Scientist
Les instructions CASE peuvent être plus efficaces que IF quand vous avez plusieurs conditions ou des conditions complexes.
Supposons que vous vouliez tester les conditions et actions suivantes :
sydney, le déplacer vers le répertoire /sydneymelbourne ou brisbane, le supprimercanberra, le renommer en IMPORTANT_filename où filename est le nom d'origineVous pourriez écrire plusieurs IF comme ceci :
grep sur le premier argument ARGV pour la condition.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, comme Air* pour « commence par Air » ou *hat* pour « contient hat ».Format de base d'une instruction CASE :
case 'STRINGVAR' inPATTERN1) COMMAND1;; PATTERN2) COMMAND2;;
*) DEFAULT COMMAND;;
esac Enfin, le mot de fin est « esac »
Format de base d'une instruction CASE :
case 'STRING' in PATTERN1) COMMAND1;; PATTERN2) COMMAND2;;*) DEFAULT COMMAND;;esac
Notre ancien 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
Notre nouveau CASE :
case $(cat $1) in*sydney*) mv $1 sydney/ ;; *melbourne*|*brisbane*) rm $1 ;; *canberra*) mv $1 "IMPORTANT_$1" ;;*) echo "No cities found" ;; esac
Introduction au scripting Bash