Как передать параметры в сценарий.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
в переменных среды.