#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
.