Bash 输出仅限于回显

Bash output limited to echo only

我正在编写一个 bash 脚本来处理备份。我创建了一个消息函数控制器,它使用函数来处理电子邮件、日志和输出。

所以结构如下:

message_call(i, "This is the output")

留言功能

-> 传递到电子邮件功能 --> 构建电子邮件文件

-> 传递给日志函数 --> 构建日志文件

-> 传递给 echo 函数(自定义) --> 格式化和回显输入依赖于 $1 作为开关和 $2 作为输出消息

当我 echo 时,我想要干净的输出,它只包含传递给 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 行,我不想要示例中的所有其他输出。

如果您的脚本中有行 set -x,请将其注释掉。如果没有,请尝试在脚本顶部添加 set +x

如果您想隐藏除您在 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