![как временно изменить режим трассировки/подробного вывода bash?](https://rvso.com/image/164708/%D0%BA%D0%B0%D0%BA%20%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%20%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D1%80%D0%B5%D0%B6%D0%B8%D0%BC%20%D1%82%D1%80%D0%B0%D1%81%D1%81%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8%2F%D0%BF%D0%BE%D0%B4%D1%80%D0%BE%D0%B1%D0%BD%D0%BE%D0%B3%D0%BE%20%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B0%20bash%3F.png)
Я использую -x
для отслеживания выполнения bash-скрипта:
#!/bin/bash -x
x=1
y=2
во время выполнения отправляет на выход
+ x=1
+ y=2
вопрос: как в середине скрипта я могу остановить/приостановить режим трассировки, а затем снова включить его? Пожалуйста, обратите внимание, что это НЕ о чем-то вроде y=2 >/dev/null.
Возможно ли это в подробном режиме ( #!/bin/bash -v
)?
решение1
Theset
встроенныйконтролирует эти параметры.
Включать xtrace
:
set -x
Чтобы отключить:
set +x
Это немного обратная логика с плюсом и минусом, но это так.
Аналогично, все остальные параметры, поддерживаемые , set
также могут быть установлены в командной строке (*) , то bash -u
же самое делает set -u
и т. д. Список таких параметров есть в связанном описании, а help set
в командной строке они также отображаются.
Некоторые из опций также имеют длинные формы, например, set -o xtrace
то же самое, что и set -x
.
(* Однако мы не можем утверждать обратное. Не все параметры командной строки можно задать с помощью set
, например, -l
не имеет эквивалента, и -c
, очевидно, не имеет.)