Les options sont des paramétrages modifiant le comportement du shell et/ou du script.
La commande set active les options dans un script. Là où vous voulez que les options soient effectives dans le script, utilisez set -o nom-option ou, plus court, set -abreviation-option. Ces deux formes sont équivalentes.
#!/bin/bash set -o verbose # Affiche toutes les commandes avant exécution.
#!/bin/bash set -v # Même effet que ci-dessus.
Pour désactiver une option dans un script, utilisez set +o nom-option ou set +abreviation-option.
#!/bin/bash set -o verbose # Mode echo des commandes activé. commande ... commande set +o verbose # Mode echo des commandes désactivé. commande # Pas d'affichage. set -v # Mode echo des commandes activé. commande ... commande set +v # Mode echo des commandes désactivé. commande exit 0
Une autre méthode d'activation des options dans un script est de les spécifier tout de suite après l'en-tête #! du script.
#!/bin/bash -x # # Le corps du script suit.
Il est aussi possible d'activer les options du script à partir de la ligne de commande. Certaines options qui ne fonctionneront pas avec set sont disponibles de cette façon. Parmi celles-ci se trouve -i, forçant un script à se lancer de manière interactive.
bash -v nom-script
bash -o verbose nom-script
Ce qui suit est une liste de quelques options utiles. Elles sont spécifiées soit dans leur forme abrégée (précédées par un simple tiret), soit par leur nom complet (précédées par un double tiret ou par un -o).
Tableau 30.1. Options de bash
Abréviation | Nom | Effet |
---|---|---|
-B | développement des accolades | Active le développement des accolades (activée par défaut) |
+B | développement des accolades | Désactive le développement des accolades |
-C | noclobber | Empêche l'écrasement de fichiers par une redirection (peut être outrepassé par >|) |
-D | (aucune) | Affiche les chaînes entre guillemets préfixées par un $ mais n'exécute pas les commandes du script. |
-a | allexport | Exporte toutes les variables définies |
-b | notify | Notifie lorsque un travail en tâche de fond se termine (n'est pas d'une grande utilité dans un script) |
-c ... | (aucune) | Lit les commandes à partir de ... |
checkjobs | Informe l'utilisateur d'un éventuel job encore ouvert, au moment de la fermeture du shell. Introduit par la version 4 de Bash, encore « experimental. » Usage : shopt -s checkjobs (Attention : risque de plantage !) | |
-e | errexit | Annule un script à la première erreur lorsqu'une commande quitte avec un statut différent de zéro (sauf pour les boucles until ou while, les tests if et les constructions de listes) |
-f | noglob | Expansion des noms de fichier désactivée |
globstar | globbing star-match | Active l'opérateur de remplacement ** (version 4+ de Bash). Usage : shopt -s globstar |
-i | interactive | Script lancé dans un mode interactif |
-n | noexec | Lit les commandes du script, mais ne les exécute pas (vérification de syntaxe) |
-o Nom-Option | (aucune) | Appelle l'option Nom-Option |
-o posix | POSIX | Modifie le comportement de Bash, ou du script appelé, pour se conformer au standard POSIX. |
-o pipefail | échec d'un tube | Fait qu'un tube renvoie le code de sortie de la dernière commande dans le tube qui a renvoyé un code de sortie différent de zéro. |
-p | privileged | Script lancé avec « suid » (attention !) |
-r | restricted | Script lancé en mode restreint (voir le Chapitre 21, Shells restreints). |
-s | stdin | Lit les commandes à partir de l'entrée standard (stdin) |
-t | (aucune) | Sort après la première commande |
-u | nounset | Essayer d'utiliser une variable non définie affiche un message d'erreur et force l'arrêt du script |
-v | verbose | Affiche chaque commande sur stdout avant de les exécuter |
-x | xtrace | Similaire à -v, mais étend les commandes |
- | (aucune) | Fin des options. Tous les autres arguments sont des paramètres de position. |
-- | (aucune) | Désinitialise les paramètres de position. Si des arguments sont donnés (-- arg1 arg2), les paramètres de position sont initialisés avec ces arguments. |