BASH - Mémo pour scripter

Cet article a été mis à jour, vous consultez ici une archive de cet article!

Introduction



Je script, je script, mais parfois, j'ai un sacré trou de mémoire ... et je galère à trouver ce que je cherche sur Internet.
Comment on incrémente une variable ? Comment on fait un SI, un POUR ?
Et bien la réponse se trouve ci-dessous !


Les variables




Affectation de variable



Pour mettre dans la variable a la valeur chaîne toto :

Code BASH :
a="toto"


De la même façon, on peut mettre dans des variables des nombres :

Code BASH :
b=2


Pour utiliser ces variables, ajouter un $ devant :

Code BASH :
echo $a
toto


On peut mettre dans une variable le résultat d'une commande shell en encadrant la commande dans $() :

Code BASH :
$ ls -l /etc | wc -l
342
 
nb=$(ls -l /etc | wc -l)
 
echo $nb
342
 



Les structures conditionnelles




Les opérateurs de comparaison



Comparaison d'entiers



-eq : est égal à

Code BASH :
if [ "$a" -eq "$b" ]


-ne : n'est pas égal à

Code BASH :
if [ "$a" -ne "$b" ]


-gt : est plus grand que

Code BASH :
if ["$a" -gt "$b" ]


-ge : est plus grand ou égal à

Code BASH :
if [ "$a" -ge "$b" ]


-lt : est plus petit que

Code BASH :
if [ "$a" -lt "$b" ]


-le : est plus petit ou égal à

Code BASH :
if [ "$a" -le "$b" ]


Comparaison de chaînes



== : est égal à

Code BASH :
if [ "$a" == "$b" ]


!= : n'est pas égal à

Code BASH :
if [ "$a" != "$b" ]


-z string : Vrai si la longueur de la chaîne est égale à 0 (variable non initialisée)
Code BASH :
if [ -z "$var" ]



Les tests sur les fichiers



-e file : Vrai si le fichier existe

Code BASH :
if [ -e /tmp/fichier ]


-d file : Vrai si le fichier existe et que c'est un répertoire

Code BASH :
if [ -d /tmp/dossier ]


-f file : Vrai si le fichier existe et que c'est un fichier ordinaire

Code BASH :
if [ -f /tmp/fichier ]


-h file : Vrai si le fichier existe et que c'est un lien symbolique

Code BASH :
if [ -h /tmp/lien ]


-r file : Vrai si le fichier possède les droits de lecture

Code BASH :
if [ -r /tmp/fichier ]


-s file : Vrai si le fichier a une taille non nulle

Code BASH :
if [ -s /tmp/fichier ]


-w file : Vrai si le fichier possède les droits d'écriture

Code BASH :
if [ -w /tmp/fichier ]


-x file : Vrai si le fichier possède les droits d'exécution

Code BASH :
if [ -x /tmp/fichier ]


-O file : Vrai si le possesseur est identique à celui qui exécute le test

Code BASH :
if [ -O /tmp/fichier ]


-G file : Vrai si le possesseur qui exécute le test fait partie du groupe du fichier

Code BASH :
if [ -G /tmp/fichier ]


-N file : Vrai si le fichier existe et qu'il a été modifié depuis sa dernière lecture

Code BASH :
if [ -N /tmp/fichier ]



Comparaison de fichiers



file1 -nt file2 : Vrai si le file1 est plus récent que file2 (date de modification) ou si file1 existe et pas file2

Code BASH :
if [ file1 -nt file2 ]


file1 -ot file2 : Vrai si file1 est plus ancien que file2 ou que file2 existe et pas file1

Code BASH :
if [ file1 -ot file2 ]