Wie finde ich die Zeilennummer in Bash, in der ein Fehler aufgetreten ist?
Beispiel
Ich erstelle das folgende einfache Skript mit Zeilennummern, um zu erklären, was wir brauchen. Das Skript kopiert Dateien von
cp $file1 $file2
cp $file3 $file4
Wenn einer der cp
Befehle fehlschlägt, wird die Funktion mit Exit 1 beendet . Wir möchten der Funktion die Möglichkeit hinzufügen, den Fehler auch mit der Zeilennummer auszudrucken (z. B. 8 oder 12).
Ist das möglich?
Beispielskript
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
und / oder verwenden, um set -v
zu verfolgen, was ausgeführt wurde. Nicht genau das, wonach Sie gefragt haben, aber es wird wahrscheinlich auch hilfreich sein.