Я создал скрипт для Cygwin и установил ярлык, как описано в конце этого урока.

Хотя мой сценарий должен принимать переменные параметры и то, как он был установлен, он либо работает, как если бы не было передано ни одного параметра, либо, если я установил что-либо после пути к сценарию, он считает его буквальным параметром.

Рассмотрим скрипт (echo.sh), подобный этому:

#!/bin/bash    
echo "this"$1
sleep 30

Цель в моем ярлыке:

C:\cygwin64\bin\bash.exe --login -i '/cygdrive/c/cygwin64/echo.sh'

Когда я нажимаю на ярлык, он уже печатает «это» и спит. Я старался:

C:\cygwin64\bin\bash.exe --login -i '/cygdrive/c/cygwin64/echo.sh $1' #file not found
C:\cygwin64\bin\bash.exe --login -i '/cygdrive/c/cygwin64/echo.sh' $1 #prints 'this$1'

1 ответ1

0

Как уже говорилось в комментариях, ярлыки не могут обрабатывать переменные.

Вы можете создать пакетный скрипт (script.cmd), который получает аргумент и вызывает Cygwin.

C:\cygwin64\bin\mintty.exe /usr/bin/bash --login "/cygdrive/c/cygwin64/echo.sh" %1

Вы также можете перетащить значок в свой script.cmd , и он получит путь к удаленному файлу в качестве аргумента. Тем не менее, вы должны позаботиться о переводе путей в Windows <-> Cygwin (cygpath).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .