Как писать скрипты, которые могут работать в bash и csh? - PullRequest
1 голос
/ 13 апреля 2010

Я не уверен, возможно ли это вообще, но есть ли способ написать сценарии оболочки, которые могут интерпретироваться как оболочкой Bourne, так и оболочкой C? Я хочу избежать простой проверки оболочки и запуска специфичного для оболочки кода. Если это возможно, есть ли инструкции о том, как это сделать?

Я всегда писал свои сценарии для синтаксиса оболочки Bourne, и почти ничего не знаю о csh, так что это может быть глупым вопросом. У меня есть Google, чтобы узнать о различиях между оболочками, но мало информации (насколько я могу судить) о ее последствиях для сценариев.

Ответы [ 3 ]

2 голосов
/ 13 апреля 2010

Если ваш скрипт простой, предложите использовать:

#!/bin/sh

Эта оболочка (почти?) Всегда доступна.

1 голос
/ 14 апреля 2010

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

То, что обеспечивает Unix, что весьма полезно, - это способ гарантировать язык скрипта, независимо от того, какая оболочка (или другая программа) используется для вызова скрипта. Это так называемый синтаксис «резкого взрыва». Итак, вы выбираете свою любимую оболочку (я настоятельно предпочитаю оболочку Bourne оболочке C, а file /usr/bin/* | grep shell соглашается со мной), а затем вы пишете

#!/bin/sh

export PATH=/usr/local/bin:$PATH
print "I am running as Bourne shell no matter what your login shell is!"

Иногда полезно написать что-то более сложное; У меня есть несколько сценариев, которые начинаются с

#/usr/bin/env lua5.1

вы также можете сделать это с помощью perl, python, ruby, ...

0 голосов
/ 14 апреля 2010

вы можете попробовать прочитать эту книгу . в противном случае, научитесь использовать такой язык, как Python или Perl. Его базовый синтаксис программирования, например, управление потоком, структуры данных, циклы, почти все стандартные для более старых и новых версий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...