Сколько команд может стояться в очереди с операторами управления?

Heredocs (thats, что <<< назван) в ударе, всегда заканчиваются символом новой строки. Нет никакого способа отключить это поведение. Этот символ новой строки - то, что отбрасывает контрольную сумму.

6
06.08.2014, 04:27
2 ответа

На самом деле нет; пока память вашего компьютера может обрабатывать очередь, оболочка должна делать все возможное. Согласно POSIX :

Оболочка должна считывать свой ввод в виде строк из файла, из терминала в случае интерактивной оболочки или из строки в случае sh -c или system () . Входные строки могут иметь неограниченную длину . Эти строки должны быть проанализированы в двух основных режимах: обычное распознавание токенов и обработка здесь-документов.

В основном все те || Объединенные вместе && составляют одну строку ввода для синтаксического анализатора оболочки, потому что он должен анализировать токены для каждого списка команд , прежде чем оценивать и выполнять простые команды, составляющие список.

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

7
27.01.2020, 20:27

Полагаю, что лимит, с которым вы столкнетесь, это не количество команд, а размер буфера команды sh. На современных Linux-системах я считаю, что размер составляет около 64K символов.

.
0
27.01.2020, 20:27

Теги

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