I'm trying to run the following from my bash script. (bash installed via msysgit)
taskkill /IM ssh-agent.exe
The output I get on the screen from taskkill
is:
ERROR: Invalid argument/option - 'C:/Program Files/Git/IM'.
Type "TASKKILL /?" for usage.
The executible is running, but the /IM
is being expanded regardless of what I try to do to escape it...
I've tried using \/IM
but then it sends \/IM
without escaping the slash, I've tried a few different ways of running it through eval, cmd /c start, etc... but they all seem to have issues. I've also tried set -o noglob
, which also didn't work. neither did $'\057/'IM
or similar attempts...
Since my comment actually provided the answer, I'll post it.
How about escaping a forward slash to another forward slash like //
. It works for me when I execute this command where I escaped the /r
parameter:
start C:/folder/beep 2000 250 100 //r 3
Source: http://oldwiki.mingw.org/index.php/switches%20with%20forward%20slashes
Minimalist GNU for Windows
Passing switches with forward slashes under MSYS
In MSYS a command line argument of "/c" is interpreted as the C: drive, so to pass any argument beginning with a forward slash you need to use two forward slashes. For example, to use this command in MSYS:
cmd /c echo foo
Use:
cmd //c echo foo
If you need to have the windows-style of a path in a shell script, you can do
x=$(cd /unix/path && cmd //c cd)
The x var now contains the windows equivalent path to /unix/path