Почему я должен избегать циклов в оболочках?

Следующая ссылка рекомендует против использования циклов в оболочках.

переменные bash для диапазона петель

Почему это? Вот пример цикла, который я только что просмотрел, когда наткнулся на этот ответ:

find /etc/postinstall -name '*.sh' | while read script do echo Running $script ... $script mv $script $script.done done 

2 Solutions collect form web for “Почему я должен избегать циклов в оболочках?”

Мне приходят два типа приложений, в которых оболочки оболочки не считаются наилучшим подходом. Первая – обработка данных; многие инструменты (например, sed , awk , perl и т. д.) делают цикл неявно и намного более результативным. Второй вариант (например, в вашем примере кода), где выполняется некоторый код для набора файлов, где find с ключом -exec также может уже выполнять команды (также оболочку) с меньшими проблемами и накладными расходами. Есть, вероятно, больше случаев, но эти два упомянутых уже должны быть просвещенными. Это сказало; петли оболочки не являются по своей сути плохими или что-то вроде этого. Просто воспользуйтесь другими вариантами (например, двумя упомянутыми).

Shell – ужасный язык программирования, но он очень удобен. Я пишу много сценариев оболочки, и иногда я использую циклы. У меня есть сценарий, который занимает пару часов для выполнения. Он нуждается в переписывании в чем-то другом. Если в сценарии оболочки есть цикл, это индикатор того, что настало время подумать о том, чтобы переписать этот скрипт, прежде чем он станет полностью неуправляемым.

  • Выполнить команду для каждой записи в файле
  • Как удалить файл с именем -help с командной строки bash?
  • Сделать `rm` перемещение в корзину
  • bash / sh для замены текста между некоторыми тегами / строками в текстовом файле
  • cURL доступ к сайту HTTPS
  • Когда произвольные строки передаются для проверки двусмысленных
  • Попросите команду ls вести себя по-разному в зависимости от количества записей
  • Могу ли я создавать, устанавливать разрешения и записывать в файл с помощью одной команды Unix?
  • Возможно ли сделать scp сбоем, когда вы делаете локальную копию?
  • Исключить один каталог в шаблоне `ls`
  • с учетом регистра gnu mv на Mac OS X
  • Linux и Unix - лучшая ОС в мире.