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

#bash #command-line #instrumentation #verbose

#bash #командная строка #инструментарий #подробный

Вопрос:

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

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

Ответ №1:

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

 export PS4=''
  

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

 export PS4='[ $LINENO ] '
  

Ответ №2:

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

 set -v
  

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

Комментарии:

1. set -v не печатает то же самое, set -x что и — он печатает команды перед расширением переменных и т. Д. Например, если у вас есть var="value" и команда echo {1..2} "$var" , с set -x ней печатается echo 1 2 value , но с set -v ней печатается echo {1..2} "$var" .

2. @GordonDavisson set -v фактически печатает необработанные входные строки по мере их чтения; он не печатает команды ни до, ни после их развертывания. Сравните for i in 1 2 3; do echo $i; done с set -x и set -v .