什么都不做的管道
Pipe that does nothing
我在 AIX 机器上,需要一个在管道之后不执行任何操作的程序。
我会更准确。我需要这样的东西:
if [ $NOSORT ] ; then
SORTEXEC="/usr/bin/doesnothing"
else
SORTEXEC="/usr/bin/sort -u"
fi
# BIG WHILE HERE
do
done | SORTEXEC
我尝试使用tee > /dev/null
,但我不知道是否有其他更好的选择。
谁能帮忙制定一个比 tee
更合适的程序?
提前致谢
使用tee
如下:
somecommand | tee
这只是将标准输入复制到标准输出。
或u使用true
或false
。他们所做的就是退出 EXIT_SUCCESS
或 EXIT_FAILURE
.
somecommand | true
注意,从 somecommand
到标准输出的每个输出都被丢弃。
另一种选择是使用 cat
:
somecommand | cat
:
是 POSIX 规范中的可移植的、什么都不做的命令。
if [ "$NOSORT" ] ; then
SORTEXEC=:
else
SORTEXEC="/usr/bin/sort -u"
fi
:
保证是 shell 内置于 POSIX 兼容的 shell;其他行为相似的命令可能是需要启动新进程以忽略输出的外部程序。
但是,正如 tripleee 指出的那样,字符串是用来保存数据的,而不是代码。改为定义 shell 函数:
if [ "$NOSORT" ]; then
SORTEXEC () { : ; }
else
SORTEXEC () { /usr/bin/sort -u; }
fi
while ...; do
...
done | SORTEXEC
我在 AIX 机器上,需要一个在管道之后不执行任何操作的程序。
我会更准确。我需要这样的东西:
if [ $NOSORT ] ; then
SORTEXEC="/usr/bin/doesnothing"
else
SORTEXEC="/usr/bin/sort -u"
fi
# BIG WHILE HERE
do
done | SORTEXEC
我尝试使用tee > /dev/null
,但我不知道是否有其他更好的选择。
谁能帮忙制定一个比 tee
更合适的程序?
提前致谢
使用tee
如下:
somecommand | tee
这只是将标准输入复制到标准输出。
或u使用true
或false
。他们所做的就是退出 EXIT_SUCCESS
或 EXIT_FAILURE
.
somecommand | true
注意,从 somecommand
到标准输出的每个输出都被丢弃。
另一种选择是使用 cat
:
somecommand | cat
:
是 POSIX 规范中的可移植的、什么都不做的命令。
if [ "$NOSORT" ] ; then
SORTEXEC=:
else
SORTEXEC="/usr/bin/sort -u"
fi
:
保证是 shell 内置于 POSIX 兼容的 shell;其他行为相似的命令可能是需要启动新进程以忽略输出的外部程序。
但是,正如 tripleee 指出的那样,字符串是用来保存数据的,而不是代码。改为定义 shell 函数:
if [ "$NOSORT" ]; then
SORTEXEC () { : ; }
else
SORTEXEC () { /usr/bin/sort -u; }
fi
while ...; do
...
done | SORTEXEC