Ответы:
bash -x script
или же
set -x
в сценарии.
Вы можете сбросить опцию снова с помощью set +x
. Если вы просто хотите сделать это для нескольких команд, вы можете использовать подоболочку: `(set -x; command1; command; ...;)
PS4
вы можете настроить приглашение -x
. Например: PS4='Line $LINENO @ $(date +%s.%N): ' bash -x script
( date
хотя и замедлит это)
Они также работают:
set -v
или же
#!/bin/bash -v
Но -v не печатает строку PS4 перед каждой строкой сценария и не отслеживает шаги оператора «for» (например) по отдельности. Он выводит комментарии, а -x - нет.
Вот пример вывода с использованием -v:
#!/bin/bash -v
# this is a comment
for i in {1..4}
do
echo -n $i
done
1234echo
echo hello
hello
Вот результат того же сценария с -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
Обратите внимание, что я включил «echo -n», чтобы подчеркнуть различия между -v и -x. Кроме того, -v - это то же самое, что и -o verbose, но последний, похоже, не работает как часть шебанга.
идет как
language -x script
language = python, perl, bash -x = оператор script = имя файла
Надеюсь, это поможет.
-x
не имеет ничего общего с эхом в Python
set
варианты, вы можете найти их на этой странице руководства .