Труба, которая ничего не делает

Я на AIX box и мне нужна программа, которая при использовании после канала ничего не делает.

Я буду более точным. Мне нужно что-то вроде этого:

if [ $NOSORT ] ; then
    SORTEXEC="/usr/bin/doesnothing"
else
    SORTEXEC="/usr/bin/sort -u"
fi
# BIG WHILE HERE
do

done | SORTEXEC

Я пытался использовать tee > /dev/null, но я не знаю, есть ли другой лучший вариант.

Кто-нибудь может помочь с более подходящей программой, чем tee?

заранее спасибо

2 ответа

Решение

Использование tee следующее:

somecommand | tee

Это просто копирует стандартный ввод в стандартный вывод.

Или используйте true или же false, Все, что они делают, это выход EXIT_SUCCESS или же EXIT_FAILURE,

somecommand | true

Обратите внимание, что каждый вывод на стандартный вывод somecommand упал

Другой вариант заключается в использовании cat:

somecommand | cat

: является переносимой, ничего не делающей командой в спецификации POSIX.

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

: гарантированно будет встроенной в POSIX-совместимую оболочку; другие команды, которые ведут себя аналогично, могут быть внешними программами, которые требуют запуска нового процесса, чтобы игнорировать вывод.

Однако, как указал tripleee, строки предназначены для хранения данных, а не кода. Вместо этого определите функцию оболочки:

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

while ...; do
    ...
done | SORTEXEC
Другие вопросы по тегам