.sh файлы из командной строки?

1306
Connor Herman

Можете ли вы вызвать .shфайл из командной строки Windows, используя любую из этих программ.

Например:

msys myscript.sh 

Или же

c:\temp\msys.exe myscript.sh 

Является ли это возможным? Как я хотел бы, чтобы пакетный файл выполнял сценарии .sh на одной из моих систем.

1

1 ответ на вопрос

1
AFH

msys.exeявляется одним из нескольких портов инструментов командной строки Unix. Я не использовал его, но, msys.exeпохоже, это установочный пакет, поэтому вам нужно запустить и настроить его. Если вы хотите, чтобы инструменты были легко доступны, а установщик этого не делает, вам нужно будет добавить установленный каталог в вашу PATHпеременную.

Чтобы интерпретировать скрипт оболочки, который вам нужен bash, в своем примере вы должны набрать:

bash -c myscript.exe 

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

В качестве альтернативы, вы можете запускать bashинтерактивно вместо, cmdи тогда все ваши команды будут выполняться так же, как в Unix.

Две точки, чтобы посмотреть: -

  • Если скрипты импортированы из Unix, они будут интерпретированы правильно, но не будут работать, если они вызывают команды или ресурсы, которые либо не существуют в Windows, либо имеют другие функции.
  • Unix использует /в качестве разделителя каталогов и -для указания параметров команды, тогда как Windows использует \и /. Некоторые порты команд Unix пытаются приспособить оба стиля, но поскольку они /имеют два разных значения, это обязательно плохой компромисс. Я понятия не имею, если msysпопытки этого.
Я замалчиваю связь «.sh» с «bash». Вы не можете сделать это напрямую из-за параметра `-c`, но это все еще довольно легко сделать. AFH 9 лет назад 0
Круто, мы обнаружили, что когда установлена ​​msys, вы можете переименовать сценарии .sh в файлы bat и просто выполнить их в стандартной командной строке. Они функционировали полностью. Спасибо Connor Herman 9 лет назад 0
Хорошо. Вы получите все программы, которые были установлены, поэтому они будут доступны из `cmd`, но синтаксис оболочки Linux сильно отличается от` cmd`, поэтому любые условные выражения, циклы и т. Д. Потребуется перекодировать. Кроме того, если вы вызываете другой сценарий, оболочка Linux возвращает и продолжает исходный сценарий, тогда как `cmd` связывается с ним и не возвращается, если вы не предшествует вызову` CALL`. Если скрипт представляет собой просто последовательность программ с простыми каналами и перенаправлениями, он будет работать нормально в `cmd`. AFH 9 лет назад 0