微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 在子shell中阻止来自被调用bash函数的输出

如果我在bash中调用一个函数,并且该函数本身被设计为使用printf将消息输出到终端,我该如何抑制该功能.请允许我进一步解释.

通常我会有一个主脚本.该脚本调用一个函数.该函数使用printf执行其正常的操作并输出到终端.

我试图创建一个替代选项,你可以说,在后台运行该功能,不输出任何东西.

通常我会考虑做以下事情:

FUNCTION & > /dev/null 2>&1

这将在后台运行正常功能并丢弃所有输出.

它似乎起初工作.通常出现的消息是空白的,主脚本完成运行.一旦回到提示,那么函数(循环用于许多不同的东西)就完成了,并开始输出提示下面的终端.

思考?

解决方法:

如果你需要把功能放在后台,&在所有重定向规范之后,control operator需要在命令结束时右转:

$function myfunc() {
> printf "%s\n" "normal message"
> printf "%s\n" "error message" 1>&2
> }
$myfunc
normal message
error message
$myfunc > /dev/null 2>&1 &
[2] 12081
$
[2]+  Done                    myfunc > /dev/null 2>&1
$

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐