Podczas wykonywania skryptów powłoki, jak sprawdzić, który numer linii jest wykonywany, należy napisać opakowanie, w którym można wykonać skrypty powłoki ze skryptów powłoki i wiedzieć, który numer linii jest wykonywany.Podczas wykonywania skryptów powłoki, jak sprawdzić, który numer wiersza jest wykonywany,
Odpowiedz
Można ustawić zmienną PS4
spowodować set -x
wyjście zawierać numer linia:
PS4=':${LINENO}+'
set -x
To będzie umieścić numer wiersza przed każdym wierszu, jak to wykonuje:
:4+command here
:5+other command
Ważne jest, aby w swoich przykładach mieć pewne znaki (takie jak +
) po zmiennych rozszerzeniach w PS4
, ponieważ ten ostatni znak jest powtarzany, aby pokazać głębokość zagnieżdżenia. Oznacza to, że jeśli wywołanie funkcji, a funkcja wywołuje polecenie, wyjście z set -x
zgłosi go tak:
:3+++command run within a function called from a function
:8++command run within a function
:19+line after the function was called
Jeśli wiele plików są zaangażowane w prowadzenie skrypt, może chcesz dołączyć BASH_SOURCE
zmienna w przeciwieństwie do tylko LINENO
(zakładając, że to naprawdę jest skrypt bash, w przeciwieństwie do /bin/sh
- mieć pewność, że skrypt zaczyna #!/bin/bash
!):
PS4=':${BASH_SOURCE}:${LINENO}+'
set -x
#!/bin/sh -x
zgłosi linie jak są one realizowane (opcja -x
, aby być jasne). Nie poda on numeru o numerze, ale zgłosi aktualną linię.
Alternatywnym, ale bardziej bolesnym podejściem jest użycie obsługi pułapek, zgodnie z dokumentacją here.
Bash ma specjalną zmienną $LINENO
, która robi to, co chcesz.
#!/bin/bash
echo "$LINENO"
echo "$LINENO"
echo "$LINENO"
Demo:
$ ./lineno
2
3
4
- 1. Jak sprawdzić, czy skrypt powłoki Linux jest wykonywany przez cronjob?
- 2. GDB: Jak sprawdzić bieżący numer linii podczas debugowania?
- 3. Czy istnieje sposób sprawdzenia, czy skrypt powłoki jest wykonywany z flagą -x
- 4. Jak ustalić, który skrypt jest wykonywany w procesie PHP-FPM
- 5. Jak mogę debugować JavaScript, który jest wykonywany przez Chutzpah/PhantomJS
- 6. Testowanie jednostek dla skryptów powłoki
- 7. Kontrola wersji dla skryptów powłoki
- 8. Jak sprawdzić, który zasób losowy jest używany?
- 9. Debugowanie skryptów powłoki o numerach linii
- 10. Jak zmienić kodowanie znaków skryptów powłoki?
- 11. Opcje wiersza polecenia dla skryptów IPython *?
- 12. Zarządzanie obsługą błędów podczas uruchamiania sqlplus ze skryptów powłoki
- 13. Jak często wykonywany jest GK?
- 14. Jak znaleźć numer wiersza rekordu?
- 15. Sposób wykonywania poleceń powłoki synchronicznie w PHP
- 16. Numer wiersza w BigQuery?
- 17. Numer wiersza OrientDB
- 18. Łapanie określonego kodu javascript, który jest wykonywany onClick
- 19. Czy można uzyskać numer wiersza, który spowodował błąd?
- 20. Jak mogę sprawdzić DBNull podczas wykonywania mojego polecenia tylko raz?
- 21. Javascript nie jest wykonywany podczas odpowiadania na okno dialogowe JQuery
- 22. Jak przekazać zmienną w poleceniu zwinięcie w skryptów powłoki
- 23. Jak uzyskać numer wiersza błędu w Powershell
- 24. Wiele instrukcji, jeśli else w skryptów powłoki
- 25. Jak przyspieszyć numer wiersza w Oracle?
- 26. Numer wiersza datagridu WPF
- 27. Jak sprawdzić, czy numer jest podzielny przez pewną liczbę?
- 28. Jak sprawdzić zwracaną wartość z dyrektywy powłoki
- 29. Jak sprawdzić brakujący numer z serii liczb?
- 30. Zmień katalog skryptów na homedir użytkownika w skrypcie powłoki
i '-xv' daje jeszcze więcej informacji. – choroba