docs/docs/cours/scripting/syntax.md

3.5 KiB

Syntaxe Bash

Shebang

Permet de définit l'interpréteur qu'on veut appliquer au script. Il se place en tout début de script, et indique le chemin complet de l'exécutable.

#!/bin/bash

Structures de contrôle

for .... do .... done

Les actions entre do et done sont répétées pour chaque élément trouvées dans la liste qui suit for. Chacun des éléments est enregistré dans une variable i qui est incrémentée à chaque passage de la boucle.

for i in liste ; do
    action1 ;
    action2 ;
done

if .... then .... elif ... else ... fi

ces variable permete par exemple de faire réagir le script de manière différente, selon la réponse de l'utilisateur à une question (si ... alors .... sinon si .... sinon ....fin)

until [[ $ouinon == "y" || $ouinon == "n" ]] ; do
    echo -n "voulez-vous voir le modele de votre carte graphique Y/n : "

    read ouinon
    if [ "$ouinon" = "Y" ] || [ "$ouinon" = "y" ]; then

        GRAPHIC_CARD = $(lspci | grep VGA | cut -d: -f3 |tail -c +2)

        echo "votre carte graphique est une : $GRAPHIC_CARD

    elif [ "$ouinon" = "N" ] || [ "$ouinon" = "n" ]; then
        echo "OK, bye"
    else 
        echo "Il faut écrire "y" or "n" ;
    fi
done

while .... do .... done

while = tant que

until .... do .... done

until = jusqu'à ce que

Les outils pour la manipulation du texte

cut

tail

head

sed

La commande sed permet d'éditer une chaine de caracteres d'un fichier. Elle comprend des arguments et une subcommand. L'argument -i permet de faire le changement in place, s ou d pour substitute ou delete et g pour global.

sed 's/string1/string2/g'
sed -i 'd/string1/string2/g'

grep

La commande grep permet de filter des lignes, elle est généralement utilisé avec | . On met l'élement (lettre, chiffre ou mot) qu'on veut filtrer juste apres grep.

ls | grep ^a

tr

La commande tr permet de supprimer des caracteres identique et consécutifs.

tr -s ''

tee

La commande tee nous permet d'écrire les sorties d'une commande (sortie standard et sortie d'erreur) dans un fichier, tout en laissant les sortie s'afficher sur le terminal.

LOG=/home/admin/mon-log.txt
ma_commande 2>&1 |tee $LOG

wc

Compteur (de lignes, de mots...)

wc -l myfile.txt  # donne le nombre de lignes du fichier

awk

#awk -f {"substring"}

Bashism

string replacement ${"string"##"substring"}

Exécution conditionnelle $$ ||

comparaisons ; number -eq number

Les fonctions

Déclaration d'une fonction

Une fonction est définit en lui donnant un nom quelconque avec la syntaxe ci dessous.

random_function(){
}

Appel d'une fonction

Dans un script une fonction est simplement appelé par son nom.

random_function

Les arguments

  • $0 : Contient le nom du script
siska@siska-pc:~/cours/doc/docs/cours/scripting$ cat script.sh 
#!/bin/bash

echo $0
siska@siska-pc:~/cours/doc/docs/cours/scripting$ ./script.sh 
./script.sh
siska@siska-pc:~/cours/doc/docs/cours/scripting
  • $* : contient tout les arguments dans une chaine de charactère

  • $# : contient le nombre d'arguments

  • $? : contient le code de retour de la dernière commande

  • $$ : contient le PID du shell qui exécute le script

  • $! : contient le PID de la dernière commande lancée

### EOT (End Of Transmission)
#awk -f {"substring"}