# [Bash] Kit de base ## En-tête ```bash #!/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'environnements** qui sont définies par le système. Leur identifiant doit être en majuscule. #### Définition et affectation de variables Valeur entière : ```bash myVar=3 ``` Chaîne de caractères : ```bash myVar="Hello world !" ``` Liste : ```bash myArray=("cat" "dog" "mouse" "frog") ``` Sortie d'une commande : ```bash myVar=$( echo "test" ) ``` #### Utilisation des variables Pour accéder à la valeur stockée dans une variable on utilise le caractère **$** : ```bash echo $myVar ``` ## Conditions #### If ```bash if [ ] then fi ``` #### If / Else ```bash if [ ] then else fi ``` #### If / Elif / Else ```bash if [ ] then elif [ ] then else fi ``` #### Case ```bash case in ) ;; ) ;; esac ``` #### Tests
OperatorDescription
! EXPRESSIONThe EXPRESSION is false.
-n STRINGThe length of STRING is greater than zero.
-z STRINGThe lengh of STRING is zero (ie it is empty).
STRING1 = STRING2STRING1 is equal to STRING2
STRING1 != STRING2STRING1 is not equal to STRING2
INTEGER1 -eq INTEGER2INTEGER1 is numerically equal to INTEGER2
INTEGER1 -gt INTEGER2INTEGER1 is numerically greater than INTEGER2
INTEGER1 -lt INTEGER2INTEGER1 is numerically less than INTEGER2
-d FILEFILE exists and is a directory.
-e FILEFILE exists.
-r FILEFILE exists and the read permission is granted.
-s FILEFILE exists and it's size is greater than zero (ie. it is not empty).
-w FILEFILE exists and the write permission is granted.
-x FILEFILE 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 : ```bash if [ -r $1 ] && [ -s $1 ] then echo This file is useful. fi ``` ## Boucles #### While ```bash while [ ] do 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 : ```bash for var in <$list> do done ``` Pour une "range" on fera le type de boucle for suivant : ```bash for value in {1..5} do echo $value done ``` ## Cacher la sortie d'une commande ```bash > /dev/null 2>&1 ``` ## Obtenir la date Format **Heure-Minute-Jour-Mois-Année** : ```bash currentDate=$(date +'%H:%M-%d-%m-%Y') ``` Format **Jour-Mois-Année-Heure-Minute** : ```bash currentDate=$(date +'%d-%m-%Y-%H:%M') ``` ## Afficher un espace sans faire d'espace Cela peut s'avérer pratique notamment dans un contexte où les espaces ne sont pas autorisés mais que vous devez exécuter une commande avec des arguments (et donc des espaces). Pour cela, on utilise la variable d'environnement **{IFS}** : ```bash echo${IFS} ```