O'Reilly logo

Bash. Receptury by Cameron Newham, JP Vossen, Carl Albing

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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" ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required