consume(String)
соответствует интерфейсу Consumer<String>
, поскольку он потребляет String
- тот факт, что он возвращает значение, не имеет значения, поскольку в этом случае он просто игнорируется. (Поскольку интерфейс Consumer
вообще не ожидает никакого возвращаемого значения).
Это должен был быть выбор дизайна и в основном утилита: представьте, сколько методов нужно было бы реорганизовать или продублировать для соответствия потребностям функциональных интерфейсов, таких как Consumer
или даже очень распространенных Runnable
. (Обратите внимание, что вы можете передать любой метод, который не использует никаких параметров в качестве Runnable
для Executor
, например.)
Даже такие методы, как java.util.List#add(Object)
, возвращают значение: boolean
. Невозможно передать такой метод ссылок только потому, что они возвращают что-то (что в большинстве случаев не имеет значения во многих случаях) будет довольно раздражать.
Вы не являетесь одними в необходимости в чем-то подобном... на самом деле, кто-то хотел ту функциональность несколько десятилетий назад и разработал мишень :-)
Конечно, можно перенаправить stdout непосредственно в файл в любой оболочке с помощью> символ:
echo "hello, world!" > the-file.txt
Используйте Procmail. Procmail является Вашим другом. Procmail сделан для этого вида вещи.
Стандартная мишень инструмента Unix может сделать это. Это копирует вход для вывода, также регистрируя его в файл.
Если Вы хотите проанализировать его в сценарии:
while /bin/true; do
read LINE
echo $LINE > $OUTPUT
done
Но можно просто использовать кошку. Если кошка получит что-то на stdin, то она повторит его к stdout, таким образом, необходимо будет передать ее по каналу кошке> $OUTPUT. Они сделают то же. Вторые работы для двоичных данных также.
Если Вы хотите сценарий оболочки, попробуйте это:
#!/bin/sh
exec cat >/path/to/file
Если exim или sendmail - то, что пишет в канал, то procmail является хорошим ответом, потому что он даст Вам захват файла / сериализация, и можно поместить все это в тот же файл.
Если Вы просто хотите записать в файл, то - мишень>/tmp/log. $$ или - кошка>/tmp/log. $$ могла бы быть достаточно хорошей.
Использовать <<command>> | tee <<file>>
для передачи по каналу команды <<command>>
в файл <<file>>
.
Это также покажет вывод.
Ха? Я предполагаю, я не получаю вопрос?
Не можете Вы только закончить Ваш канал в a >> ~file
Например,
echo "Foobar" >> /home/mo/dumpfile
добавит Foobar к dumpfile (и создаст dumpfile при необходимости). Никакая потребность в сценарии оболочки... Это то, что Вы искали?
если Вы не заботитесь о выводе результата
cat - > filename
или
cat > filename