bash: отображение выполненных команд, ожидающих эхо - PullRequest
2 голосов
/ 10 мая 2011

Мне нравится использовать переключатель -x с bash для отладки скриптов.Единственным недостатком является то, что также отображаются команды echo, которые могут создавать много ненужных дубликатов:

#!/bin/bash
echo "Changing to /etc directory"
cd /etc

Затем, после запуска:

$ bash -x test.sh 
+ echo 'Changing to /etc directory'
Changing to /etc directory
+ cd /etc

Я попытался отфильтровать с помощью bash -x test.sh | grep -v '+ echo' но это не работает.

[Q] Есть ли способ, которым я могу запретить -x также отображать echo команды?

Спасибо

1 Ответ

3 голосов
/ 10 мая 2011

Вы можете отфильтровать его через движок регулярных выражений по вашему выбору:

$ ./test.sh 2>&1 | awk '{if(!match($0, /^\+ echo/)){print $0}}'

или

$ ./test.sh 2>&1 | grep -v '^\+ echo'
...