你要
./script 2>&1 1>/dev/null | ./other-script
这里的顺序很重要。假设stdin(fd 0),stdout(fd 1)和stderr(fd 2)最初都连接到tty,因此
0: /dev/tty, 1: /dev/tty, 2: /dev/tty
首先要设置的是管道。other脚本的stdin连接到管道,而script的stdout连接到管道,因此到目前为止,脚本的文件描述符如下:
0: /dev/tty, 1: pipe, 2: /dev/tty
接下来,发生重定向,从左到右。
2>&1使fd 2移至fd 1当前所在的位置,即管道。
0: /dev/tty, 1: pipe, 2: pipe
最后,
1>/dev/null将fd1重定向到
/dev/null
0: /dev/tty, 1: /dev/null, 2: pipe
最终结果是,脚本的stdout被静默,并且其stderr通过管道发送,该管道最终在其他脚本的stdin中。
另请参见http://bash-
hackers.org/wiki/doku.php/howto/redirection_tutorial
还要注意,它
1>/dev/null是的同义词,但比
>/dev/null
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)