5

我在 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吗?

提前致谢

4

2 回答 2

7

使用tee如下:

somecommand | tee

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

或者 u 使用truefalse。他们所做的只是退出EXIT_SUCCESSEXIT_FAILURE

somecommand | true

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

另一种选择是使用cat

somecommand | cat
于 2015-05-20T13:50:20.713 回答
4

:是 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
于 2015-05-20T13:52:49.400 回答