Какой на сегодняшний день является лучшим (переносимым и поддерживаемым) языком сценариев оболочки?

StackOverflow https://stackoverflow.com/questions/881757

  •  22-08-2019
  •  | 
  •  

Вопрос

Я знаю, что этот вопрос в прошлом как бы развязывал "религиозные" войны, и на него может быть не один правильный ответ.Но после работы с ksh и csh в течение последних 3-4 лет и прохождения через трудности переноса с одного на другой или применения общей логики к нескольким версиям (читается как устаревший код), если бы я писал новый скрипт, я бы выбрал ksh, но скорее по принуждению, чем по выбору.Есть ли лучший вариант, кроме ksh / csh?Также что-то, что переносимо для Unix (Solaris / HP / IBM / FreeBSD) и Linux (и если я не прошу слишком многого, или это имеет смысл для всех версий Linux)

Жду предложений ...

Мир :) Деванг Камдар

Это было полезно?

Решение

Я бы предложил простой старый sh, который доступен везде.

Также стоит отметить, что переносимость включает в себя не только оболочку, но и другие команды, используемые в скрипте, такие как awk, grep, ps или echo.

Другие советы

Если вы действительно хотите, чтобы он был переносимым (я не знаю, что какой-либо shell-скрипт можно поддерживать), я бы указал #!/bin / sh и протестировал с помощью тире и, если возможно, другие оболочки.

Я бы ожидал, что BASH будет самой распространенной оболочкой на данный момент, поскольку она используется по умолчанию для многих дистрибутивов Linux (она даже может работать в Windows с cygwin, но это, вероятно, верно и для других оболочек).Альтернативой может быть использование не самой оболочки для написания сценариев, а одного из существующих языков написания сценариев, таких как perl, python, ruby, ...

Обычно я использую ksh.Я нахожу, что это хороший компромисс между функциональностью и переносимостью.Он есть (или доступна совместимая версия) в большинстве коробок Linux и Solaris.Прошло много времени с тех пор, как я использовал HP-UX (к счастью), но я почти уверен, что там он тоже был доступен.

Если все машины, которые вам нужно поддерживать, являются современными, bash может быть вариантом.Solaris 10 поставляется с копией.Это значение по умолчанию на большинстве компьютеров Linux.

Вашим наименьшим общим знаменателем будет Bourne (sh), так что это стоит учитывать, если переносимость является вашей главной заботой.Однако в нем отсутствуют некоторые из более дружественных функций ksh и bash.

По-прежнему стоит держаться подальше от csh / tcsh для написания сценариев. Программирование Csh Считается Вредным это старое, но все еще в значительной степени актуальное.

Моим ответом был бы perl.

Делает все, что "sh", "bash" и т.д. Могут делать в более приятной и элегантной манере.

Кроме того, это на самом деле более портативно.Данная версия perl очень последовательна для всех платформ.Между дистрибутивами Linux, Solaris и AIX нет существенных различий, тогда как перенос shell-скриптов между этими платформами - настоящая проблема.

И это работает на всех Windows paltforms!При условии, что вы избегаете обратных ссылок и "system()", ваш скрипт имеет хорошие шансы на запуск.

Питон!Ознакомьтесь с IPython, который является усовершенствованным интерпретатором Python.Также: Python для системного администрирования Unix и Linux.

Вы можете писать отличные переносимые скрипты, и это весело.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top