connectiva penguin bsd logo

Les scripts bash

1_Notre premier script

2_Les variables

3_Les commandes composées    (; | & || && $() {} ``)

4_Ecriture à l'écran / lecture au clavier    (echo read)

5_Le passage de paramètres

6_Les structures conditionnelles    (if then else while until)

7_Les autres structures    (for in do case select)

8_Les fonctions

9_Pour aller plus loin


3_Les commandes composées

Les commandes qu'on a tapé jusque-là sont des commandes simples : une seule commande par ligne, les unes à la suite des autres. Bash permet de faire des commandes composées, c'est à dire plusieurs commandes sur la même lignes, qui vont influer les unes sur les autres.

les commandes séquentielles

Elles s'exécutent l'une après l'autre, exactement comme si on les avait mises sur deux lignes différentes. Le seul intérêt est d'avoir un code plus clair dans certains cas. On sépare simplement les commandes par un point-virgule.

commande1 ; commande2

les commandes redirigées

Le résultat de la commande1 est renvoyé à la commande2.

syntaxe :

commande1 | commande2

exemple :

ps -aux | grep x

Dans l'exemple, on va afficher tous les processus qui contiennent le caractère 'x'.

les commandes en parallèle

On exécute les deux commande1 et commande2 en parallèle. Commande1 est exécutée en tâche de fond.

commande1 & commande2

les commandes "OU exclusif"

Commande2 est exécutée SI et seulement SI commande1 a échoué.

commande1 || commande2

les commandes "ET exclusif"

Commande2 est exécutée SI et seulement SI commande1 a réussi.

commande1 && commande2

les commandes passées en paramètre

Commande2 sert de paramètre à commande1

syntaxe :

commande1 $(commande2) OU commande1 `commande2`

Le caractère ` s'obtient en faisant 'Alt-Gr + 7'. C'est l'apostrophe à l'envers.

exemple : on affiche l'heure

#!/bin/bash
heure=$(date +%T)
echo $heure

Les trois syntaxes suivantes donnent le même résultat :

#!/bin/bash
heure=`date +%T`
echo $heure
#!/bin/bash
echo $(date +%T)
#!/bin/bash
echo `date +%T`

les séries de commandes

On regroupe des commandes entre parenthèses ou accolades. Contrairement aux accolades, les instructions entre parenthèses se déroulent dans un shell secondaire, indépendant du shell actuel. L'utilisation des accolades est donc plutôt conseillée. Avec les accolades, la dernière commande doit se terminer avec un point-virgule.

{ commande1 ; commande2; } OU ( commande1; commande2 )

exemple : on affiche la date et la liste des fichiers, et on envoi le tout vers l'imprimante, plutôt que vers l'écran.

{ date; ls -l; } | lpr
<< page précédente
2_Les variables
page suivante >>
4_Ecriture à l'écran / lecture au clavier

Valid XHTML 1.1

logo firefox logo ubuntu logo debian logo mandriva logo gimp