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 !
Pour mettre dans la variable
a la valeur
chaîne toto :
De la même façon, on peut mettre dans des variables des nombres :
Pour utiliser ces variables, ajouter un
$ devant :
On peut mettre dans une variable le résultat d'une
commande shell en encadrant la commande dans
$() :
Grosso-modo, pour faire des calculs simples, on utilise la syntaxe suivante :
On peut affecter ce calcul à une variable :
Ou bien l'afficher :
Si on veut faire une addition :
Si on veut faire une soustraction :
Si on veut faire une multiplication :
Si on veut faire une division :
On peut évidemment utiliser des variables dans le calcul :
Pour incrémenter ou décrémenter, on peut utiliser la fonction let :
Le test "Si'" est généralement fait ainsi :
Pour les exemples, nous avons besoin d'opérateurs de comparaison, voir ci-dessous.
-eq : est égal à
-ne : n'est pas égal à
-gt : est plus grand que
-ge : est plus grand ou égal à
-lt : est plus petit que
-le : est plus petit ou égal à
== : est égal à
!= : n'est pas égal à
-z string : Vrai si la longueur de la chaîne est égale à 0 (variable non initialisée)
=~ : match avec une regexp (exemple, si ça commence par un # :
-z $var : Vrai si la taille de la chaîne est zéro (variable non utilisée ou vide)
-n $var : Vrai si la taille de la chaîne est différente de zéro (variable utilisée et non vide)
-e file : Vrai si le fichier existe
-d file : Vrai si le fichier existe et que c'est un répertoire
-f file : Vrai si le fichier existe et que c'est un fichier ordinaire
-h file : Vrai si le fichier existe et que c'est un lien symbolique
-r file : Vrai si le fichier possède les droits de lecture
-s file : Vrai si le fichier a une taille non nulle
-w file : Vrai si le fichier possède les droits d'écriture
-x file : Vrai si le fichier possède les droits d'exécution
-O file : Vrai si le possesseur est identique à celui qui exécute le test
-G file : Vrai si le possesseur qui exécute le test fait partie du groupe du fichier
-N file : Vrai si le fichier existe et qu'il a été modifié depuis sa dernière lecture
file1 -nt file2 : Vrai si le file1 est plus récent que file2 (date de modification) ou si file1 existe et pas file2
file1 -ot file2 : Vrai si file1 est plus ancien que file2 ou que file2 existe et pas file1
Le symbole de négation est
!.
Si on teste de cette façon su un dossier existe :
Et bien tester s'il existe pas se fera ainsi :
Si vous voulez combiner des tests (le ET ou bien le OU) c'est avec -a et -o :
Pour le ET :
Pour le OU :
Pour le for ce n'est pas très compliqué :
On peut traiter avec une commande aussi, par exemple la boucle ci-dessus peut être écrite en utilisant la commande
seq :
Et on peut aussi utiliser des chaines de caractère :
Pour la boucle infinie, utiliser ceci (fin de la boucle avec
break) ou
CTRL+C :
De manière générale, la syntaxe est la suivante :
Voici un exemple :
La boucle infinie se traduit ainsi :
La boucle infinie peut s’interrompre avec
break :
Pour lire les lignes d'un fichier :
Si on veut lire un fichier avec des lignes avec un séparateur (exemple passwd, qui a le séparateur : ) on peut stocker direct dans les variables
Pour vérifier si le script est lancé en root, on peut utiliser ce petit morceau de code qui va vérifier la variable EUID :