лямбда функционирует в ударе

Эта проблема возникла для меня однажды, когда я уже открыл встроенный Android-эмулятор (AVD). Проверьте, отключили ли вы его, прежде чем начинать изменять что-либо в настройках.

26
задан John Kugelman supports Monica 9 July 2009 в 01:08
поделиться

2 ответа

Я не знаю о способе сделать это, однако можно быть в состоянии выполнить то, что Вы пытаетесь сделать использование:

somecommand | while read -r; do echo "Something with $REPLY"; done

Это также будет быстрее, поскольку Вы не будете создавать новый процесс для каждой строки текста.

[РЕДАКТИРУЮТ 09.07.2009] , я внес два изменения:

  1. предложение Объединенного litb использования -r для отключения обработки обратной косой черты - это означает, что через обратные косые черты во входе пройдут неизменные.
  2. Вместо того, чтобы предоставить имя переменной (такой как X) в качестве параметра к read, мы позволяем read, присваивают его переменной по умолчанию, REPLY. Это имеет приятный побочный эффект сохранения продвижения и конечных пробелов, которые разделяются иначе (даже при том, что внутренние пробелы сохраняются).

От моих наблюдений, вместе эти изменения сохраняют все кроме литеральных символов NUL (ASCII 0) на каждой входной строке.

[РЕДАКТИРУЮТ 26.07.2016]

По словам комментатора Evi1M4chine, установка $IFS к пустой строке прежде, чем работать read X (например, с командой IFS='' read X) должна также сохранить пробелы вначале и конец при хранении результата в $X, означать, что Вы не вынуждены использовать $REPLY.

21
ответ дан j_random_hacker 28 November 2019 в 07:29
поделиться

Что относительно этого?

somecommand | xargs -d"\n" -I{} echo "the argument is: {}"

(принимает, каждым аргументом является строка, иначе измените разделитель)

3
ответ дан 28 November 2019 в 07:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: