2015-04-30 2 views
5

Я заметил, что Windows 7 позволяет выполнять файлы .sh, как если бы они были .bat-файлами. Это заставило меня задаться вопросом, можно ли написать файл .sh таким образом, чтобы его можно было запустить в Windows и Linux (скажем, bash).Скрипт командной строки (например, .bat и .sh)

Первое, что приходит мне на ум, состоит в том, чтобы скомпоновать оператор if, с которым Windows и Ubuntu могут справиться с ним и перейти в соответствующий блок для выполнения команд, специфичных для платформы. Как это можно сделать?

Примечание: Я знаю, что это не очень хорошая практика. Я также знаю, что языки сценариев, такие как Python, намного лучше подходят для решения этой проблемы, чем скрипт командной строки с смешанным синтаксисом. Мне просто интересно ...

+2

Возможно, вы найдете https://github.com/BYVoid/Batsh – user

ответ

7

Вы могли бы использовать это:

rem(){ :;};rem ' 
@goto b 
';echo sh;exit 
:b 
@echo batch 

Это действительный сценарий оболочки и партии, и будет выполнять различные блоки в зависимости от того, как он запущен.

Измените echo и @echo линии, чтобы сделать то, что вы хотите.

+0

Спасибо. Именно то, что я искал. Мне было бы интересно, если бы были другие способы. – wehnsdaefflae

0

AFAIK, вы не можете напрямую запускать .sh файлы из Windows 'cmd.exe. Для этого вам понадобится слой эмуляции * nix для запуска оболочки. Проверьте Cygwin или Msys/MinGW

+1

Спасибо за ваш ответ. Но, пожалуйста, см. Первое предложение моего вопроса. – wehnsdaefflae

+0

Ну, я прочитал, я никогда не слышал, мог вырыть любую информацию или воспроизвести ее на моей Windows 7. Как именно вы запускаете .sh-файл в вашей системе Win? – dekkard

+0

Двойной щелчок. Обратите внимание, что я говорю только о расширениях файлов. – wehnsdaefflae

Смежные вопросы