6.14. Wielokrotne rozgałęzianie kodu
Problem
Skrypt musi wykonać wiele operacji porównania wartości, co wymaga użycia wielu podobnych konstrukcji if
-then
-else
. Czy nie ma łatwiejszego sposobu na rozwiązanie tego problemu?
Rozwiązanie
Wielokrotne rozgałęzianie kodu doskonale opisuje instrukcja case
:
case $FN in *.gif) gif2png $FN ;; *.png) pngOK $FN ;; *.jpg) jpg2gif $FN ;; *.tif | *.TIFF) tif2jpg $FN ;; *) print "Format pliku %s nie jest obsługiwany" $FN ;; esac
Odpowiadająca powyższemu skryptowi konstrukcja if
-then
-else
miałaby postać:
if [[ $FN == *.gif ]] then gif2png $FN elif [[ $FN == *.png ]] then pngOK $FN elif [[ $FN == *.jpg ]] then jpg2gif $FN elif [[ $FN == *.tif || $FN == *.TIFF ]] then tif2jpg $FN else printf "Format pliku %s nie jest obsługiwany" ...
Get Bash. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.