Comment trouvez-vous le numéro de ligne dans Bash où une erreur s'est produite?
Exemple
Je crée le script simple suivant avec des numéros de ligne pour expliquer ce dont nous avons besoin. Le script copiera les fichiers de
cp $file1 $file2
cp $file3 $file4
Lorsque l'une des cp
commandes échoue, la fonction se termine avec la sortie 1 . Nous voulons ajouter la possibilité à la fonction d'imprimer également l'erreur avec le numéro de ligne (par exemple, 8 ou 12).
Est-ce possible?
Exemple de script
1 #!/bin/bash
2
3
4 function in_case_fail {
5 [[ $1 -ne 0 ]] && echo "fail on $2" && exit 1
6 }
7
8 cp $file1 $file2
9 in_case_fail $? "cp $file1 $file2"
10
11
12 cp $file3 $file4
13 in_case_fail $? "cp $file3 $file4"
14
set -x
et / ou set -v
pour retracer ce qui a été exécuté. Pas exactement ce que vous avez demandé, mais ce sera probablement utile aussi.