Bash : premiers scripts
Un script Bash est un fichier texte qui enchaîne des commandes du terminal. Cette rubrique présente l’essentiel pour automatiser des tâches sur Ubuntu, sans aller jusqu’aux usages avancés. Les exemples utilisent des noms génériques.
Un premier script
Section intitulée « Un premier script »Créer le fichier bonjour.sh :
#!/usr/bin/env bash# Affiche un message de bienvenue
nom="${1:-monde}"echo "Bonjour, $nom !"- La première ligne, le shebang (
#!), indique quel interpréteur exécute le fichier.#!/usr/bin/env bashtrouve Bash dans lePATH;#!/bin/bashest aussi courant. - Une ligne qui commence par
#est un commentaire. ${1:-monde}vaut le premier argument, oumondes’il est absent.
Exécuter le script
Section intitulée « Exécuter le script »chmod +x bonjour.sh # rend le fichier exécutable (une seule fois)./bonjour.sh # Bonjour, monde !./bonjour.sh Alice # Bonjour, Alice !bash bonjour.sh Alice # équivalent, sans droit d'exécutionLe ./ indique que le script se trouve dans le dossier courant. Pour l’appeler de n’importe où, le placer dans un dossier du PATH (par exemple /usr/local/bin) :
sudo install -m 755 bonjour.sh /usr/local/bin/bonjourbonjour AliceLes bases de la syntaxe
Section intitulée « Les bases de la syntaxe »#!/usr/bin/env bash
# Variable : pas d'espace autour du =dossier="/var/log"
# Résultat d'une commande dans une variabledate_du_jour="$(date +%F)"
# Utiliser une variableecho "Date : $date_du_jour, dossier : $dossier"
# Plusieurs commandes sur une lignemkdir -p /tmp/essai && cd /tmp/essai # && : la 2e commande s'exécute si la 1re réussitls /inexistant || echo "Dossier absent" # || : la 2e commande s'exécute si la 1re échoueCode de sortie
Section intitulée « Code de sortie »Chaque commande renvoie un code de sortie : 0 signifie « succès », toute autre valeur signale une erreur. Il est lu avec $?.
ls /tmpecho $? # 0
ls /inexistantecho $? # 2 (erreur)Un script termine avec exit pour renvoyer son propre code :
if [[ ! -f "$1" ]]; then echo "Fichier introuvable : $1" >&2 exit 1fi>&2 envoie le message sur la sortie d’erreur, séparée de la sortie normale (voir Redirections et pipes).
Variables spéciales
Section intitulée « Variables spéciales »| Variable | Contenu |
|---|---|
$0 |
Nom du script |
$1, $2… |
Arguments passés au script |
$# |
Nombre d’arguments |
$@ |
Tous les arguments (à utiliser entre guillemets : "$@") |
$? |
Code de sortie de la dernière commande |
$$ |
Identifiant du processus du script |
Déboguer un script
Section intitulée « Déboguer un script »bash -n script.sh # vérifie la syntaxe sans exécuterbash -x script.sh # affiche chaque commande avant de l'exécuterDans un script, set -x active ce suivi à partir de cette ligne, et set +x le désactive.
Ubuntu 24.04 et 26.04 : différences à connaître
Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »Les scripts Bash sont identiques sur les deux versions. Les points ci-dessous concernent leur environnement d’exécution.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Manuel :
man bashouhelp <commande-interne>(par exemplehelp read) - Documentation officielle : gnu.org/software/bash/manual