将基于窗口斜杠(/)的参数从bash脚本传递给程序

时间:2016-01-07 04:50:04

标签: windows bash msysgit

我试图从我的bash脚本中运行以下命令。 (通过msysgit安装bash)

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也没有类似的尝试......

2 个答案:

答案 0 :(得分:26)

由于我的评论实际上提供了答案,我会发布。

如何将正斜杠转义为//之类的另一个正斜杠。当我执行此命令并转义/r参数时,它对我有用: start C:/folder/beep 2000 250 100 //r 3

来源:http://oldwiki.mingw.org/index.php/switches%20with%20forward%20slashes

  

Windows的极简GNU

     

在MSYS下使用正斜杠传递开关

     

在MSYS中,命令行参数“/ c”被解释为C:   驱动,所以传递任何以你需要的正斜杠开头的参数   使用两个正斜杠。例如,要在MSYS中使用此命令:

     

cmd /c echo foo

     

使用:

     

cmd //c echo foo

     

如果你需要在shell脚本中使用windows风格的路径,那么你   可以做到

     

x=$(cd /unix/path && cmd //c cd)

     

x var现在包含与/ unix / path

的窗口等效路径

答案 1 :(得分:4)

经过几个小时的寻找各种搜索,例如“禁用bash文件扩展”等,我通过专门搜索我试图运行的"bash" "windows" taskkill可执行文件找到了它,我遇到了this answer,这最终对我有用。

cmd " /c taskkill /F /IM ssh-agent.exe"