Для тех, кто ищет setварианты, вы можете найти их на этой странице руководства .
Mkobit
Вы можете просто расширить Shebang, как это#!/bin/bash -x
sobi3ch
Ответы:
110
bash -x script
или же
set-x
в сценарии.
Вы можете сбросить опцию снова с помощью set +x. Если вы просто хотите сделать это для нескольких команд, вы можете использовать подоболочку: `(set -x; command1; command; ...;)
Но -v не печатает строку PS4 перед каждой строкой сценария и не отслеживает шаги оператора «for» (например) по отдельности. Он выводит комментарии, а -x - нет.
Вот пример вывода с использованием -v:
#!/bin/bash -v# this is a commentfor i in{1..4}do
echo -n $idone1234echo
echo hello
hello
Вот результат того же сценария с -x:
+for i in'{1..4}'+ echo -n 11+for i in'{1..4}'+ echo -n 22+for i in'{1..4}'+ echo -n 33+for i in'{1..4}'+ echo -n 44+ echo+ echo hello
hello
Обратите внимание, что я включил «echo -n», чтобы подчеркнуть различия между -v и -x. Кроме того, -v - это то же самое, что и -o verbose, но последний, похоже, не работает как часть шебанга.
set -o xtraceи set +o xtraceваши друзья (это более многословно, чем -o verbose, и вывод идет в STDERR, в отличие от подробного, который, кажется, регистрируется в STDOUT).
set
варианты, вы можете найти их на этой странице руководства .#!/bin/bash -x
Ответы:
или же
в сценарии.
Вы можете сбросить опцию снова с помощью
set +x
. Если вы просто хотите сделать это для нескольких команд, вы можете использовать подоболочку: `(set -x; command1; command; ...;)источник
PS4
вы можете настроить приглашение-x
. Например:PS4='Line $LINENO @ $(date +%s.%N): ' bash -x script
(date
хотя и замедлит это)Они также работают:
или же
Но -v не печатает строку PS4 перед каждой строкой сценария и не отслеживает шаги оператора «for» (например) по отдельности. Он выводит комментарии, а -x - нет.
Вот пример вывода с использованием -v:
Вот результат того же сценария с -x:
Обратите внимание, что я включил «echo -n», чтобы подчеркнуть различия между -v и -x. Кроме того, -v - это то же самое, что и -o verbose, но последний, похоже, не работает как часть шебанга.
источник
Это также должно работать:
источник
Это должно работать:
источник
set -o xtrace
иset +o xtrace
ваши друзья (это более многословно, чем-o verbose
, и вывод идет в STDERR, в отличие от подробного, который, кажется, регистрируется в STDOUT).Смотрите больше советов здесь
источник
Есть несколько способов.
как линия Шебанга.
Включение
set -x
в сам скрипт включит функционал, аset +x
отключит его. Оба эти метода также будут работать с более переносимой оболочкой sh.Если я правильно помню, Perl также имеет опцию -x.
источник
идет как
language = python, perl, bash -x = оператор script = имя файла
Надеюсь, это поможет.
источник
-x
не имеет ничего общего с эхом в Python#! /bin/bash -x
делает то, что вы хотите.источник