Un mémo sur les commandes utiles pour créer un script Bash.
Pour affecter le résultat d'une commande shell, on peut utiliser $(
ou
ou encore mieux, pour respecter les retours chariot si la variable en contient :
-> Renvoie "4" si a="test"
Il faut utiliser les expressions : ${variable:position} ou ${variable:position:longueur}
-> Renvoie "st" si a="test", car renvoie les X derniers caractères.
-> Renvoie "es" si a="test" car la sous-chaîne commence à 0.
-> Incrémente la variable i de 1
-> Affiche les 2 éléments du tableau
L'expression suivante peut être utilisée pour remplacer directement des caractères, en recherchant/remplaçant la première occurrence trouvée : ${variable/recherche/remplace}
-> Affiche "czci est une valeur"
Pour effectuer plusieurs remplacements, ajouter un second slash après le nom de la variable : ${variable//recherche/remplace}
Par la substitution, on peut convertir en majuscule une variable :
Ainsi qu'en minuscules :
Il existe des variables déjà prédéfinies par l'interpréteur bash, dont les plus intéressantes sont :
Nom | Description |
---|---|
$HOME | Répertoire personnel de l'utilisateur |
$PATH | Valeur de la variable d'environnement PATH, qui contient les chemins de recherches |
$$ | PID du processus |
$PPID | PID du processus parent |
$I | PID du processus enfant |
$PWD | Répertoire actuel (peut être différent du répertoire du script) |
$SECONDS | Nombre de secondes écoulées depuis le démarrage du script |
$? | Code retour de la dernière commande lancée |
Pour effectuer un calcul, il faut l'encadrer par les balises : $(( <calcul> ))
ou
Remarques :
Attention à bien respecter les espaces avant et après les crochets ainsi que avant et après les signes "==" !
ou
Opérateur | Description | Exemple |
---|---|---|
= | Egalité | if [ ma_variable = "b" ] |
!= | Différence | if [ ma_variable != "b" ] |
-z | Est vide | if [ -z ma_variable ] |
-n | Est non vide | if [ -n ma_variable ] |
Opérateur | Description | Equivalent mathématique | Exemple |
---|---|---|---|
-eq | Egalité | = | if [ var1 -eq var2 ] |
-ne | Différence | <> | if [ var1 -ne var2 ] |
-gt | Supérieur (greater than) | > | if [ var1 -gt var2 ] |
-ge | Supérieur ou égal (greater or equal) | >= | if [ var1 -ge var2 ] |
-lt | Inférieur (lesser than) | < | if [ var1 -lt var2 ] |
-le | Inférieur ou égal (lesser or equal) | <= | if [ var1 -le var2 ] |
La commande case <variable> in permet d'effectuer un traitement selon une valeur. Voici un exemple :
Il est possible de tester plusieurs variables, comme ceci :
On peut utiliser les fonctions logiques NON, ET, OU avec les comparaisons. A noter que pour les opérateurs logiques ET et OU, où on combine les conditions, il faut doubler les crochets.
Fonction | Description | Exemple |
---|---|---|
! | NON : inverse le sens du test | if [ ! ${a} = ${b} ] |
&& | ET : combine plusieurs conditions obligatoires | if [[ ${a} = ${b} && ${b} = ${c} ]] |
|| | OU : combine plusieurs conditions optionnelles | if [[ ${a} = ${b} || ${b} = ${c} ]] |
Dans le cas ci-dessus, on utilise la commande seq, qui crée une séquence de 1 à 5.
Il faut utiliser -nt et -ot entre deux fichiers pour comparer les dates de modification de deux fichiers :
Si vous avez appelé un programme, vous pouvez récupérer son code retour juste après son exécution et le renvoyer à l'appelant, comme ceci :
Si vous souhaitez écrire la valeur d'une variable sur plusieurs lignes, suffixez chaque ligne par "\", comme ci-dessous :
RSS | Informations |