Як знайти номер рядка в Bash, де сталася помилка?
Приклад
Я створюю наступний простий скрипт з номерами рядків, щоб пояснити, що нам потрібно. Сценарій буде копіювати файли з
cp $file1 $file2
cp $file3 $file4
Якщо одна з cp
команд виходить з ладу, функція вийде з виходом 1 . Ми хочемо додати можливість функції також друкувати помилку з номером рядка (наприклад, 8 або 12).
Чи можливо це?
Зразок сценарію
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
та / або set -v
відстежувати, що було виконано. Не зовсім те, про що ви просили, але це, мабуть, також буде корисно.