Al ejecutar scripts de shell, cómo saber qué número de línea está ejecutando, tengo que escribir un contenedor, donde puedo ejecutar scripts de un shell y saber qué número de línea está ejecutando.Al ejecutar scripts de shell, cómo saber qué número de línea está ejecutando,
Respuesta
Es posible ajustar la variable PS4
para causar set -x
de salida para incluir el número de línea:
PS4=':${LINENO}+'
set -x
Esto pondrá el número de línea antes de cada línea, ya que ejecuta:
:4+command here
:5+other command
Es importante tener algún carácter sigil (como un +
en mis ejemplos) después de las expansiones variables en PS4
, porque ese último carácter se repite para mostrar la profundidad de anidamiento. Es decir, si se llama a una función, y que la función invoca un comando, la salida de set -x
lo reportará este modo:
:3+++command run within a function called from a function
:8++command run within a function
:19+line after the function was called
Si hay varios archivos están involucrados en el funcionamiento de la secuencia de comandos, es posible que desee incluir la BASH_SOURCE
variables en lugar de solamente LINENO
(suponiendo que esto es realmente una escritura del golpe, en contraposición a /bin/sh
- asegúrese de que su escritura se inicia con #!/bin/bash
!):
PS4=':${BASH_SOURCE}:${LINENO}+'
set -x
#!/bin/sh -x
reportará las líneas a medida que se ejecutan (la opción -x
, para ser claros). No le dará el número de línea , pero informe la línea actual.
Un enfoque alternativo, pero más doloroso, es utilizar un manipulador de trampa, como se documentó here.
Bash tiene una variable especial $LINENO
que hace lo que quiere.
#!/bin/bash
echo "$LINENO"
echo "$LINENO"
echo "$LINENO"
Demostración:
$ ./lineno
2
3
4
- 1. Cómo saber con certeza si FastCGI se está utilizando para ejecutar scripts php
- 2. ¿Cómo uso Ruby para scripts de shell?
- 3. Cómo saber si el servicio se está ejecutando utilizando adb shell en android
- 4. Cómo saber si el servidor de emacs se está ejecutando
- 5. ¿Cómo interactúa Perl con los scripts que está ejecutando?
- 6. ¿Ejecutar scripts de shell desde el Dock OS X?
- 7. Ejecutando scripts dentro de C#
- 8. ¿Por qué Cygwin puede ejecutar scripts .bat?
- 9. scripts shell/batch para dirigir comandos al shell adb
- 10. Ejecutando comandos de shell desde Scala REPL
- 11. Ejecutando scripts en HtmlAgilityPack
- 12. Ejecutando scripts PHP concurrentes
- 13. Ejecutando R Scripts con Gráficos
- 14. ¿Por qué PATH no está disponible para scripts de shell personalizados ejecutados desde Xcode?
- 15. Ejecutando múltiples scripts/sesiones R
- 16. ¿Cómo puede saber mi programa si Delphi se está ejecutando?
- 17. R ¿Números de línea de scripts al error?
- 18. ¿Qué significa si [$? -eq 0] mean para scripts de shell?
- 19. ejecutan los scripts de shell en C++
- 20. Ejecutando scripts de Python como PHP
- 21. Forma preferida de #! en scripts de shell
- 22. ejecutando scripts a través de processbuilder
- 23. Editar script de shell mientras se está ejecutando
- 24. Compiladores para scripts de shell
- 25. ¿Cómo saber si la actualización MATERIALIZED VIEW se está ejecutando?
- 26. ¿Cómo saber si se está ejecutando un temporizador?
- 27. Ejecutando scripts usando más usuarios
- 28. ¿Cómo puedo saber si un proceso se está ejecutando?
- 29. Pruebas unitarias para scripts de shell
- 30. ¿Cómo puedo saber qué versión de TinyMCE estoy ejecutando?
y '-xv' da aún más información. – choroba