Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 阻止子shell中被调用的bash函数的输出_Linux_Bash_Background_Null - Fatal编程技术网

Linux 阻止子shell中被调用的bash函数的输出

Linux 阻止子shell中被调用的bash函数的输出,linux,bash,background,null,Linux,Bash,Background,Null,如果我在bash中调用一个函数,并且该函数本身设计为使用printf向终端输出消息,那么我如何抑制该功能呢。请允许我进一步解释 通常我会有一个主脚本。此脚本调用一个函数。该函数使用printf执行正常操作并输出到终端 我试图创建一个替代选项,您可以说,在后台运行该函数,不输出任何内容 通常我会想做以下几点: FUNCTION & > /dev/null 2>&1 这将在后台运行正常功能并放弃所有输出 一开始似乎很管用。消息通常显示的位置为空,主脚本完成运行。返回到提

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

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

我试图创建一个替代选项,您可以说,在后台运行该函数,不输出任何内容

通常我会想做以下几点:

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
:)接受