¿Cómo encuentra el número de línea en Bash donde ocurrió un error?
Ejemplo
Creo el siguiente script simple con números de línea para explicar lo que necesitamos. El script copiará archivos de
cp $file1 $file2
cp $file3 $file4
Cuando uno de los cp
comandos falla, la función saldrá con la salida 1 . Queremos agregar la capacidad a la función para imprimir también el error con el número de línea (por ejemplo, 8 o 12).
es posible?
Script de muestra
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
y / o set -v
rastrear lo que se ha ejecutado. No es exactamente lo que pediste, pero probablemente también sea útil.