Как отправить stdin в цикл while с помощью оператора перенаправления

Для этого можно использовать утилиту getconf. Это должно сработать для вас

$ getconf _NPROCESSORS_ONLN
8
0
10.05.2019, 01:09
1 ответ

Вам определенно понадобится подстановка процесса, если ваш скрипт продолжает работу после цикла и хочет обработать ${line}.

Уберите точку с запятой и поместите перенаправление ввода между doneи подстановкой процесса:

done < <( echo "foo\n"; exit )

Обратите внимание, что вам не нужно явно указывать exitдля прекращения выполнения подстановки процесса.

Однако для обработки текстовых файлов обычно намного лучше и безопаснее использовать sedили awk, которые также дают гораздо лучшую производительность. Если вам действительно необходимо использовать Bash для обработки текстовых строк, обычно очень рекомендуется делать это как в:(показывая только первую строку цикла)

while IFS= read -r line ; do

если вы действительно не знаете, что вам нужно иначе.

Это требуется для необработанной обработки входных строк, содержащих пробелы, новые строки и обратную косую черту, которые в противном случае Bash будет анализировать, сжимать и интерпретировать как (соответственно )разделители и escape-символы.

3
28.01.2020, 02:22

Теги

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