Для этого можно использовать утилиту getconf
. Это должно сработать для вас
$ getconf _NPROCESSORS_ONLN
8
Вам определенно понадобится подстановка процесса, если ваш скрипт продолжает работу после цикла и хочет обработать ${line}
.
Уберите точку с запятой и поместите перенаправление ввода между done
и подстановкой процесса:
done < <( echo "foo\n"; exit )
Обратите внимание, что вам не нужно явно указывать exit
для прекращения выполнения подстановки процесса.
Однако для обработки текстовых файлов обычно намного лучше и безопаснее использовать sed
или awk
, которые также дают гораздо лучшую производительность. Если вам действительно необходимо использовать Bash для обработки текстовых строк, обычно очень рекомендуется делать это как в:(показывая только первую строку цикла)
while IFS= read -r line ; do
если вы действительно не знаете, что вам нужно иначе.
Это требуется для необработанной обработки входных строк, содержащих пробелы, новые строки и обратную косую черту, которые в противном случае Bash будет анализировать, сжимать и интерпретировать как (соответственно )разделители и escape-символы.