Odpowiedzi:
bash -x script
lub
set -x
w skrypcie.
Możesz ponownie ustawić opcję za pomocą set +x
. Jeśli chcesz to zrobić tylko dla kilku poleceń, możesz użyć podpowłoki: `(set -x; command1; command; ...;)
PS4
możesz dostosować podpowiedź -x
. Np .: PS4='Line $LINENO @ $(date +%s.%N): ' bash -x script
( date
spowolni to)
Te działają również:
set -v
lub
#!/bin/bash -v
Ale -v nie drukuje łańcucha PS4 przed każdą linią skryptu i nie śledzi indywidualnie kroków instrukcji „for” (na przykład). Odsyła komentarze, podczas gdy -x nie.
Oto przykład danych wyjściowych przy użyciu -v:
#!/bin/bash -v
# this is a comment
for i in {1..4}
do
echo -n $i
done
1234echo
echo hello
hello
Oto wynik tego samego skryptu z opcją -x:
+ for i in '{1..4}'
+ echo -n 1
1+ for i in '{1..4}'
+ echo -n 2
2+ for i in '{1..4}'
+ echo -n 3
3+ for i in '{1..4}'
+ echo -n 4
4+ echo
+ echo hello
hello
Zauważ, że dodałem „echo -n”, aby podkreślić różnice między opcjami -v i -x. Ponadto, -v jest tym samym, co „-o gadatliwy”, ale ten ostatni wydaje się nie działać jako część shebang.
Jest kilka sposobów.
#!/usr/bin/env bash -x
jako linia shebang.
Dołączenie set -x
do samego skryptu włączy tę funkcję, a jednocześnie set +x
ją wyłączy. Obie te metody będą również działać z bardziej przenośną powłoką sh.
Jeśli dobrze pamiętam, perl ma również opcję -x.
idzie jak
language -x script
język = python, perl, bash -x = operator script = nazwa pliku
mam nadzieję, że to pomoże.
-x
nie ma nic wspólnego z odbijaniem echa w Pythonie
set
opcji, możesz je znaleźć na tej stronie podręcznika .