Передача окон на основе косой черты (/) для программы из bash script
Я пытаюсь запустить следующее из bash script. (bash установлен через msysgit)
taskkill /IM ssh-agent.exe
Выход, который я получаю на экране от taskkill
, это:
ERROR: Invalid argument/option - 'C:/Program Files/Git/IM'.
Type "TASKKILL /?" for usage.
Выполняемый выполняется, но /IM
расширяется независимо от того, что я пытаюсь сделать, чтобы избежать его...
Я пробовал использовать \/IM
, но затем он отправляет \/IM
без экранирования косой черты. Я пробовал несколько разных способов запускать его через eval, cmd/c start и т.д.... но все они кажутся иметь проблемы. Я также пробовал set -o noglob
, который также не работал. не было $'\057/'IM
или подобных попыток...
Ответы
Ответ 1
Поскольку мой комментарий действительно предоставил ответ, я отправлю его.
Как избежать перехода косой черты в другую косую черту, например //
. Он работает для меня, когда я выполняю эту команду, где я избежал параметра /r
:
start C:/folder/beep 2000 250 100 //r 3
Источник: http://oldwiki.mingw.org/index.php/switches%20with%20forward%20slashes
Минималистский GNU для Windows
Передача переключателей с косой чертой под MSYS
В MSYS аргумент командной строки "/c" интерпретируется как C: диск, чтобы передать любые аргументы, начинающиеся с косой черты, которые вам нужны для использования двух косых черт. Например, чтобы использовать эту команду в MSYS:
cmd /c echo foo
Использование:
cmd //c echo foo
Если вам нужен стиль windows для пути в оболочке script, вы может сделать
x=$(cd /unix/path && cmd //c cd)
Теперь x var содержит эквивалентный путь к /unix/path
Ответ 2
После нескольких поисков различных поисковых запросов, таких как "disable bash расширение файла" и т.п., я нашел его, выполнив поиск для "bash" "windows" taskkill
исполняемого файла, который я пытался запустить, я наткнулся на этот ответ, который, наконец, работал у меня.
cmd " /c taskkill /F /IM ssh-agent.exe"