Труба, которая ничего не делает
Я на 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