Bash输出仅限于回声

时间:2015-06-08 19:20:13

标签: linux bash shell backup echo

我正在编写一个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行,我想要的样本中的所有其他输出。

2 个答案:

答案 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
相关问题