Могу ли я заставить bash -x не печатать префикс +?

Когда я вызываю bash с параметром -x, он печатает каждую команду перед ее выполнением. Однако команды печатаются с префиксом +.

Есть ли способ заставить его печатать команды, но без этого префикса? С -x или без него?


person einpoklum    schedule 10.10.2020    source источник


Ответы (2)


Вы можете настроить префикс при использовании bash -x, установив переменную PS4. Итак, в вашем .bashrc у вас может быть что-то вроде этого:

export PS4=''

Или, если вы хотите что-то отладить, пусть он напечатает номер строки следующим образом:

export PS4='[ $LINENO ] '
person Lasse Meyer    schedule 10.10.2020

Вставьте в качестве первой строки:

set -v

затем запустите его без -x

person Oliver Gaida    schedule 10.10.2020
comment
set -v печатает не то же самое, что set -x - он печатает команды до переменных и т.д. Например, если у вас есть var="value" и команда echo {1..2} "$var", с set -x будет напечатано + echo 1 2 value, а с set -v будет напечатано echo {1..2} "$var". - person Gordon Davisson; 11.10.2020
comment
@GordonDavisson set -v на самом деле печатает необработанные входные строки по мере их чтения; он не печатает команды ни до, ни после их раскрытия. Сравните for i in 1 2 3; do echo $i; done с set -x и set -v. - person user414777; 11.10.2020