Оболонки не здійснюють ніякої реорганізації коду, який їм передають, він просто інтерпретується один рядок за іншим (більше нічого не має сенсу в інтерпретаторі команд). Значна частина часу, проведеного оболонкою, припадає на лексичний аналіз / аналіз / запуск програм, що називаються.
Для простих операцій (як-от ті, що змінюють рядки в прикладах наприкінці запитання) я здивуюсь, якщо час для завантаження програм не перекриє жодної мізерної різниці швидкості.
Мораль історії полягає в тому, що якщо вам дійсно потрібна більша швидкість, вам краще скористатися (напів) складеною мовою, як Perl або Python, з якою швидше почати, для чого можна записати багато згаданих операцій безпосередньо і не потрібно викликати зовнішні програми, і він має можливість викликати зовнішні програми або зателефонувати в оптимізовані C (або будь-які інші) модулі, щоб виконати велику роботу. Ось чому в Fedora "цукор системного адміністрування" (GUI, по суті) написаний на Python: Можна додавати приємний графічний інтерфейс з не надто великими зусиллями, досить швидкий для таких додатків, мати прямий доступ до системних викликів. Якщо вам недостатня швидкість, візьміть C ++ або C.
Але не їдьте туди, якщо не зможете довести, що підвищення продуктивності варто втратити гнучкість та час розробки. Сценарії оболонки не надто погані для читання, але я здригаюся, коли згадую деякі сценарії, які використовувались для встановлення Ultrix, я колись намагався розшифрувати. Я здався, було застосовано занадто багато "оптимізації сценарію оболонки".