case et loop - part2

case

case word in
    patterns ) commands ;;
esac

ex 1

#!/bin/bash

echo -n "Tappe un chiffre ou une lettre > "
read character
case $character in
                                # Check for letters
    [[:lower:]] | [[:upper:]] ) echo "You typed the letter $character"
                                ;;

                                # Check for digits
    [0-9] )                     echo "You typed the digit $character"
                                ;;

                                # Check for anything else
    * )                         echo "You did not type a letter or a digit"
esac

* si aucun autre n'a matché (reste des solutions)

 

Boucles (loop) : while, until et for

https://www.gnu.org/software/bash/manual/bash.html#Looping-Constructs

boucles dans les scripts bash : syntaxe et ex simple
syntaxe ex simple
for variable in words; do commands
done
count=0
for i in $(cat ~/.bash_profile); do
    count=$((count + 1))
    echo "Word $count ($i) contains $(echo -n $i | wc -c) characters"
done
until test-commands; do consequent-commands; 
done

-> tourne si test-commands retourne statut exit <> 0

 
while test-commands; do consequent-commands; 
done

-> tourne si test-commands retourne statut exit = 0

 

for

La variable shell $@ a la liste des arguments passés en ligne de commande est souvent utilisée pour traiter une liste de fichiers :

#!/bin/bash

for filename in "$@"; do
    result=
    if [ -f "$filename" ]; then
        result="$filename is a regular file"
    else
        if [ -d "$filename" ]; then
            result="$filename is a directory"
        fi
    fi
    if [ -w "$filename" ]; then
        result="$result and it is writable"
    else
        result="$result and it is not writable"
    fi
    echo "$result"
done

 

 

 

source http://linuxcommand.org/lc3_wss0110.php