Как найти номер строки в 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
отслеживать, что было выполнено. Не совсем то, что вы просили, но, вероятно, это тоже будет полезно.