Какой самый лучший (переносимый и обслуживаемый) язык сценариев оболочки сегодня? - PullRequest
4 голосов
/ 19 мая 2009

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

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

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

Ответы [ 6 ]

8 голосов
/ 19 мая 2009

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

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

3 голосов
/ 19 мая 2009

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

2 голосов
/ 19 мая 2009

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

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

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

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

2 голосов
/ 19 мая 2009

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

0 голосов
/ 19 мая 2009

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

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

0 голосов
/ 19 мая 2009

Мой ответ будет perl.

Делает все, что "sh", "bash" и т. Д., Может более изящно и элегантно.

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

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

...