Aller au contenu

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.

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 bash trouve Bash dans le PATH ; #!/bin/bash est aussi courant.
  • Une ligne qui commence par # est un commentaire.
  • ${1:-monde} vaut le premier argument, ou monde s’il est absent.
Fenêtre de terminal
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écution

Le ./ 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) :

Fenêtre de terminal
sudo install -m 755 bonjour.sh /usr/local/bin/bonjour
bonjour Alice
#!/usr/bin/env bash
# Variable : pas d'espace autour du =
dossier="/var/log"
# Résultat d'une commande dans une variable
date_du_jour="$(date +%F)"
# Utiliser une variable
echo "Date : $date_du_jour, dossier : $dossier"
# Plusieurs commandes sur une ligne
mkdir -p /tmp/essai && cd /tmp/essai # && : la 2e commande s'exécute si la 1re réussit
ls /inexistant || echo "Dossier absent" # || : la 2e commande s'exécute si la 1re échoue

Chaque commande renvoie un code de sortie : 0 signifie « succès », toute autre valeur signale une erreur. Il est lu avec $?.

Fenêtre de terminal
ls /tmp
echo $? # 0
ls /inexistant
echo $? # 2 (erreur)

Un script termine avec exit pour renvoyer son propre code :

Fenêtre de terminal
if [[ ! -f "$1" ]]; then
echo "Fichier introuvable : $1" >&2
exit 1
fi

>&2 envoie le message sur la sortie d’erreur, séparée de la sortie normale (voir Redirections et pipes).

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
Fenêtre de terminal
bash -n script.sh # vérifie la syntaxe sans exécuter
bash -x script.sh # affiche chaque commande avant de l'exécuter

Dans 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.