Как передать параметры в сценарий.sh под Windows?

Я пытаюсь выполнить сценарии.sh под Windows. Я установил Git, который позволил мне запускать.sh файлы. Тем не менее, я не могу передать какие-либо параметры без префикса выполнения с "sh":

Мой файл.sh:

echo "Test" $1

если я выполню это с:

> sh test.sh 123

я получил

Тест 123

Однако, если я просто выполню это как

> test.sh 123

я получил

Тестовое задание

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

1 ответ

Решение

Как объяснил @HarryJohnston в комментариях, первым шагом к решению этой проблемы было выяснение assoc а также ftype ассоциации. assoc скорее всего вернется .sh=sh_auto_fileв то время как в моем случае, ftype возвращенный sh_auto_file="C:\Program Files\Git\git-bash.exe" --no-cd "%L" %*, Одна часть проблемы была похожа на то, что происходило в этой проблеме - Windows не передавала параметры в файл.sh. Чтобы это исправить, sh_auto_file ассоциация должна заканчиваться / иметь "%1" %* как часть этого, по-видимому. Однако другая часть проблемы заключалась в том, что (по крайней мере, в Windows 10 в моем случае) в реестре может быть несколько мест с неправильной записью. В итоге мне пришлось вручную изменить 2-3 записи в реестре на "C:\Program Files (x86)\Git\bin\sh.exe" "%1" %* чтобы он наконец заработал. Чтобы найти эти места, найдите .sh а также sh_auto_file и заменить соответственно.

Бонус: чтобы файлы.sh выполнялись без необходимости писать ".sh" в конце, добавьте.SH в pathext в переменных среды.

Другие вопросы по тегам