我喜欢使用带有bash的-x
开关来调试脚本。唯一的缺点是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'
过滤掉,但它不起作用。
[问]我是否可以阻止-x
同时显示echo
个命令?
由于
答案 0 :(得分:3)
您可以通过您选择的正则表达式引擎过滤它:
$ ./test.sh 2>&1 | awk '{if(!match($0, /^\+ echo/)){print $0}}'
或
$ ./test.sh 2>&1 | grep -v '^\+ echo'