我正在编写一个bash脚本来处理备份。我创建了一个消息函数控制器,它使用函数来处理电子邮件,日志和输出。
所以结构如下:
message_call(i,"这是输出")
消息功能
- >传递给电子邮件功能 - >构建电子邮件文件
- >传递给日志功能 - >构建日志文件
- >传递到回声功能(自定义) - >格式化和回显输入依赖于$ 1作为开关,$ 2作为输出消息
当我回显我希望干净的输出只包含传递给echo函数的消息时,我可以指向所有输出/ dev / null但是我很难限制除echo命令之外的所有输出。
当前输出样本:
craig@ubuntu:~/backup/functions$ sudo ./echo_function.sh i test
+ SWITCH=i
+ INPUT=test
+ echo_function
+ echo_main
+ echo_controller i test
+ '[' i == i ']'
+ echo_info test
+ echo -e '\e[32m\e[1m[INFO]\e[0m test'
[INFO] test
+ echo test
test
+ '[' i == w ']'
+ '[' i == e ']'
上面我单独运行了echo函数,我想要的输出在第10行,我想要的样本中的所有其他输出。
答案 0 :(得分:2)
如果您的脚本中有set -x
行,请将其注释掉。如果没有,请尝试在脚本顶部添加set +x
。
答案 1 :(得分:0)
如果你想隐藏除你在echo函数中明确做的事以外的所有输出,你可以这样做:
exec 7>&1 # save a copy of current stdout
exec >/dev/null # redirect everyone else's stdout to /dev/null
ls # output goes to /dev/null
echo My Message >&7 # output goes to "old" stdout