Jak znaleźć numer linii w Bash, w którym wystąpił błąd?
Przykład
Tworzę następujący prosty skrypt z numerami linii, aby wyjaśnić, czego potrzebujemy. Skrypt skopiuje pliki z
cp $file1 $file2
cp $file3 $file4
Gdy jedno z cp
poleceń nie powiedzie się, funkcja zakończy działanie z wyjściem 1 . Chcemy dodać funkcję do funkcji drukowania błędu również z numerem linii (na przykład 8 lub 12).
czy to możliwe?
Przykładowy skrypt
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
i / lub set -v
do śledzenia tego, co zostało wykonane. Niezupełnie to, o co prosiłeś, ale prawdopodobnie też będzie pomocne.