Академический Документы
Профессиональный Документы
Культура Документы
1 Initiation à Bash 1
# !/bin/bash
nom[0]=’Bonjour’
nom[1]=’Monsieur’
#affiche ’Bonjour’
echo ${nom[0]}
#affiche ’Bonjour Monsieur’
echo ${nom[*]}
Les scripts Bash sont dotés de certains paramètres spéciaux. On peut récupérer leurs
valeurs dans le script par :
– $0 correspond au nom du script lancé, $1 correspond au premier argument, $2 au
deuxième argument ...
– $# a pour valeur le nombre total de paramètres ($0 compris) passés au script
– $ ? a pour valeur le code de retour de la dernière commande exécutée dans le shell
– $@ pour récupérer la concaténation de tous les paramètres, en les séparant par un
espace
Bash considère qu’une commande s’est bien deroulée lorsqu’elle reçoit comme valeur de
sortie ’0’ (zéro), toute autre valeur correspondant à une exécution non réussie (entièrement
ou partiellement). Donc, si, dans la structure de commande, la commande qui joue le rôle
de condition renvoie ’0’, alors cela correspond à un True dans le type Booléen, et vice-
versa. Toute condition est analysée par la commande test(interne à Bash), sans pour autant
qu’elle soit obligatoirement écrite. Voici trois exemples pour expliciter ce qui vient d’être
dit : Exemples :
if test -f mon_fichier ; then
echo "le fichier existe"
fi
if [ -f mon_fichier ] ; then
echo "le fichier existe"
fi
if [ ./ma_commande ] ; then
echo "la commande s’est terminée avec succès"
fi
Quelques comparaisons utiles :
-f teste l’existence d’un fichier
-d teste l’existence d’un répertoire
-x teste si le fichier existe et est exécutable
-r teste si le fichier existe et est ouvert en lecture
-w teste si le fichier existe et ouvert en écriture
-s teste si le fichier existe et a une taille supérieur à 0 octet
Pour les comparaisons arithmétiques (voir la deuxième partie de ce tutoriel pour plus
d’informations), il peut être plus agréable d’utiliser une autre syntaxe :
if (( $nombre_1 == $nombre_2 )) ; then
echo "il y a egalité"
fi
Remarque : il faut TOUJOURS laisser un espace entre les crochets "[ ]" et entre chaque
argument ; sinon vous obtiendrez des méssages d’erreurs tels que "syntax error in expres-
sion" ou "syntax error near unexpected token".
0.1.6 5.1 IF :
if condition_1 ; then
commandes1
elif condition_2 ; then
commandes2
else
commandes3
fi