Bash Set in Fish
Dans cet article, nous allons apprendre à taper set -e
, set -u
et set -x
dans la coquille de poisson.
Bash set -x
La commande set -x
est utilisée pour déboguer les scripts Bash en imprimant chaque instruction exécutée sur le shell à des fins de débogage et de dépannage. La commande set -x
peut être exécutée directement dans un shell Bash interactif ou dans un script Bash.
La commande set -x
place typiquement l’initialisation du shell Bash après le sh-bang
.
Nous activons le débogage dans cet exemple en utilisant la commande set -x
. Par défaut, le débogage est désactivé dans Bash.
Au lieu de cela, chaque instruction est imprimée sur le terminal Bash, suivie des résultats de l’instruction, pour faciliter la vérification. Par exemple, echo "The First Tree"
est écrit en premier, suivi de son résultat.
De plus, les instructions déboguées commencent par un signe plus.
#!/bin/bash
set -x
echo " The First Tree"
echo "The Second Tree"
Production:
+ echo ' The First Tree'
The First Tree
+ echo 'The Second Tree'
The Second Tree
Bash set -e
La commande set -e
peut être utilisée pour arrêter l’exécution d’un script ou d’une fonction et renvoyer un code d’erreur non nul si nous nous appuyons sur l’exécution du script ou de la fonction et voulons des informations précises sur le résultat.
Par défaut, les fonctions et scripts Bash renvoient 0 si leur exécution se termine correctement et sans erreur. Cependant, si un problème survient, un code d’erreur fournit des détails spécifiques sur l’erreur.
Dans l’exemple suivant, nous configurons exit si une erreur se produit au début du script. Comme il n’y a pas d’autorisation root, mkdir /root/test
renvoie une erreur et le répertoire ne peut pas être créé.
Par conséquent, la ligne echo "Progress..."
peut maintenant être exécutée et affichée sur le terminal.
#!/bin/bash
set -e
mkdir /root/test
echo "Progress..."
Bash set -u
La commande set-u
indique au shell Bash d’interpréter les variables non définies comme des erreurs et de quitter immédiatement. Cela nous rapproche considérablement du comportement des langages avancés.
La commande set -u
peut empêcher et afficher les erreurs pour les variables Bash inutilisées.
Exemple:
#!/bin/bash
firstName="Jackie"
fullName="$firstname John"
echo "$fullName"
Veuillez vous référer à l’exemple précédent. Voyez-vous l’erreur?
Sur le côté droit de la troisième ligne, le mot "firstname"
apparaît tout en minuscules au lieu de la casse camel. Sans l’option -u
, cette erreur ne s’afficherait pas.
Cependant, avec l’option -u
, le script se termine sur cette ligne avec un code de sortie de 1
, et le message "firstname : unbound variable"
est imprimé dans stderr
.
Généralement, nous voulons qu’il échoue explicitement et rapidement au lieu de créer des bogues subtils qui ne seront découverts que bien plus tard.
Commande pour la coquille de poisson
set fish_trace 1 # display the expanded command line before execution
set fish_trace 2 # prepend file and line number to the command line
set fish_trace 1 1 # print the command line before execution and the exit status following execution.
set fish_trace 1 2 # as above, except print the exit status of all subprocesses (?)
set fish_trace 0 1 # print command-line exit status
Ces options, telles que set -u
, set -e
et set -x
, n’existent pas dans Fish. Il n’y a pas de syntaxe dédiée pour définir des variables dans Fish.
A la place, il utilise une commande standard : set
, qui accepte un nom de variable et sa valeur. Si à la fois une variable et des valeurs sont fournies, le set
attribue les valeurs à la variable avec le nom spécifié.
Plusieurs valeurs sont autorisées puisque toutes les variables dans Fish sont des listes.