Вот как передать аргумент в функцию bash
оболочки с помощью SendTo
(или с помощью перетаскивания). В качестве примера я использовал встроенный echo
. Установите цель для вашей ссылки в SendTo
папке следующим образом:
C:\cygwin\bin\bash.exe -c "echo Argument: $0; read"
Здесь $0
обозначает первый аргумент после заданной командной строки a), то есть полное имя файла, для которого было выполнено действие sendto. read
держит окно открытым, чтобы вы могли прочитать сообщение. (Я проверил это с Cygwin's bash
, но я думаю, что Mingw bash
должен работать тоже.)
В вашем случае цель должна быть
c:\MinGW\msys\1.0\bin\bash.exe -c "/path/to/your/script.sh $0; read"
Теперь ваш скрипт может обрабатывать имя файла. Но обратите внимание, что имя файла передается сценарию в качестве первого аргумента, поэтому внутри сценария указывается имя файла$1
.
Наконец, что не менее важно, вот два скриншота в качестве резюме:
а) Вы цитировали man bash
:
-c string
Если присутствует опция -c, то команды читаются из строки. Если после строки есть аргументы, они присваиваются позиционным параметрам, начиная с $ 0.
Чтобы понять это, используйте, например, следующую целевую строку:
C:\cygwin\bin\bash.exe -c "echo This is $0; read" Foo Bar Baz
Это напечатает This is Foo
, а
C:\cygwin\bin\bash.exe -c "echo This is $2; read" Foo Bar Baz
напечатает This is Baz
. Таким образом, «строка» - это все, что находится между апострофами, и Foo Bar Baz
это аргументы.