给定一个 shell 脚本:
#!/bin/sh
echo "I'm stdout";
echo "I'm stderr" >&2;
有没有一种方法调用该脚本,使得只有stderr会打印输出,当命令的最后一部分是2>/dev/null时,即
$ > sh myscript.sh SOME_OPTIONS_HERE 2>/dev/null
I'm stderr
或者,另外一种选择:
$ > sh myscript.sh SOME_OPTIONS_HERE >/dev/null
I'm stdout
这是一组讲义幻灯片末尾的问题,但我几乎可以确定经过近一天的努力工作后,这一定是某种打字错误。转轴操作不起作用。2>&-不起作用。我已经没有更多的想法了!
1>&3-
移动文件描述符比仅复制文件描述符要好一些,因为这样您不会结束时有一个打开的FD 3。 - 200_successmyscript.sh 3>&2 2>&1 1>&3 3>&- …
。在bash中,可以动态分配文件描述符:myscript.sh {FD}>&2 2>&1 1>&$FD {FD}>&-) …
,其中FD是一个变量名。 - Stanislav German-Evtushenkosh myscript.sh 2>/dev/null 3>&2 2>&1 1>&3
或者(((sh myscript.sh 1>&3) 2>&1) 3>&2) 2>/dev/null
。 - Don Hatch