什么都不做的管道

  • 本文关键字:管道 bash sh ksh no-op
  • 更新时间 :
  • 英文 :


我在一台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更合适的程序吗?

Thanks in advance

使用tee如下:

somecommand | tee

这只是将标准输入复制到标准输出。

或使用truefalse。他们所做的就是退出EXIT_SUCCESSEXIT_FAILURE

somecommand | true

注意,从somecommand输出到stdout的每个输出都会被删除。

另一个选项是使用cat:
somecommand | cat

:是POSIX规范中可移植的、不做任何事情的命令。

if [ "$NOSORT" ] ; then
    SORTEXEC=:
else
    SORTEXEC="/usr/bin/sort -u"
fi 

:保证是一个内置在posix兼容shell中的shell;其他行为类似的命令可能是需要启动新进程以忽略输出的外部程序。

然而,正如tripleee指出的,字符串是用来保存数据的,而不是代码。定义一个shell函数:

if [ "$NOSORT" ]; then
    SORTEXEC () { : ; }
else
    SORTEXEC () { /usr/bin/sort -u; }
fi
while ...; do
    ...
done | SORTEXEC

相关内容

  • 没有找到相关文章

最新更新