Cheet-sheet
En-tête
#!/bin/bash
Variables
Il existe 2 types de variables en bash :
- Les variables traditionnelles définies par l'utilisateur. Leur identifiant doit être en minuscule.
- Les variables d'
environnementenvironnements qui sont définies par le système. Leur identifiant doit être en majuscule.
Définition et affectation de variables
Valeur entière :
myVar=3
Chaîne de caractères :
myVar="Hello world !"
Liste :
myArray=("cat" "dog" "mouse" "frog")
Sortie d'une commande :
myVar=$( echo "test" )
Utilisation des variables
Pour accéder à la valeur stockée dans une variable on utilise le caractère $ :
echo $myVar
Conditions
If
if [ <some test> ]
then
<commands>
fi
If / Else
if [ <some test> ]
then
<commands>
else
<other commands>
fi
If / Elif / Else
if [ <some test> ]
then
<commands>
elif [ <some test> ]
then
<different commands>
else
<other commands>
fi
Case
case <variable> in
<pattern 1>)
<commands>
;;
<pattern 2>)
<other commands>
;;
esac
Tests
Operator | Description |
---|---|
! EXPRESSION | The EXPRESSION is false. |
-n STRING | The length of STRING is greater than zero. |
-z STRING | The lengh of STRING is zero (ie it is empty). |
STRING1 = STRING2 | STRING1 is equal to STRING2 |
STRING1 != STRING2 | STRING1 is not equal to STRING2 |
INTEGER1 -eq INTEGER2 | INTEGER1 is numerically equal to INTEGER2 |
INTEGER1 -gt INTEGER2 | INTEGER1 is numerically greater than INTEGER2 |
INTEGER1 -lt INTEGER2 | INTEGER1 is numerically less than INTEGER2 |
-d FILE | FILE exists and is a directory. |
-e FILE | FILE exists. |
-r FILE | FILE exists and the read permission is granted. |
-s FILE | FILE exists and it's size is greater than zero (ie. it is not empty). |
-w FILE | FILE exists and the write permission is granted. |
-x FILE | FILE exists and the execute permission is granted. |
Opérations booléennes
On peut combiner les tests grâce aux opérateurs suivants :
ET |
OU |
&& |
|| |
Exemple :
if [ -r $1 ] && [ -s $1 ]
then
echo This file is useful.
fi
Boucles
While
while [ <some test> ]
do
<commands>
done
For
Pour parcourir une liste, on utilise une boucle for où la variable var sera l'élément sélectionné de la liste à traiter :
for var in <$list>
do
<commands>
done
Pour une "range" on fera le type de boucle for suivant :
for value in {1..5}
do
echo $value
done