Linux 阻止子shell中被调用的bash函数的输出
如果我在bash中调用一个函数,并且该函数本身设计为使用printf向终端输出消息,那么我如何抑制该功能呢。请允许我进一步解释 通常我会有一个主脚本。此脚本调用一个函数。该函数使用printf执行正常操作并输出到终端 我试图创建一个替代选项,您可以说,在后台运行该函数,不输出任何内容 通常我会想做以下几点:Linux 阻止子shell中被调用的bash函数的输出,linux,bash,background,null,Linux,Bash,Background,Null,如果我在bash中调用一个函数,并且该函数本身设计为使用printf向终端输出消息,那么我如何抑制该功能呢。请允许我进一步解释 通常我会有一个主脚本。此脚本调用一个函数。该函数使用printf执行正常操作并输出到终端 我试图创建一个替代选项,您可以说,在后台运行该函数,不输出任何内容 通常我会想做以下几点: FUNCTION & > /dev/null 2>&1 这将在后台运行正常功能并放弃所有输出 一开始似乎很管用。消息通常显示的位置为空,主脚本完成运行。返回到提
FUNCTION & > /dev/null 2>&1
这将在后台运行正常功能并放弃所有输出
一开始似乎很管用。消息通常显示的位置为空,主脚本完成运行。返回到提示符后,函数(为许多不同的事情循环)完成并开始输出到提示符下的终端
想法?如果需要将函数放在后台,则在所有重定向规范之后,
&
需要在命令末尾向右移动:
$ 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
$
正确的语法应该是
FUNCTION > /dev/null 2>&1 &
因为
&
与一样是命令终止符
,您需要在运行函数的命令中包含输出重定向,而不是下面的命令。Awww Digital也可以。谢谢你。对于正在寻找类似解决方案的任何人来说,这也是正确的。我花了太多时间试图描述您的命令是如何工作的,并试图思考为什么一个只包含输出重定向的命令会被bash
:)接受