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

Tra*_*er1 24 windows bash msysgit

我正在尝试从我的bash脚本运行以下内容.(通过msysgit安装bash)

taskkill /IM ssh-agent.exe
Run Code Online (Sandbox Code Playgroud)

我从屏幕上得到的输出taskkill是:

ERROR: Invalid argument/option - 'C:/Program Files/Git/IM'.
Type "TASKKILL /?" for usage.
Run Code Online (Sandbox Code Playgroud)

可执行程序正在运行,但/IM正在扩展,无论我尝试做什么来逃避它...


我已经尝试使用\/IM但是然后它发送\/IM而没有逃避斜线,我尝试了几种不同的方式来运行它通过eval,cmd/c start等...但它们似乎都有问题.我也试过set -o noglob,这也没用.既没有做过$'\057/'IM类似的尝试......

M. *_*pen 29

由于我的评论实际上提供了答案,我将发布它.

如何将前锋斜线转移到另一个前锋斜线上//.当我执行此命令时,它在我转义/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的windows等效路径

  • @sveinbr:感谢上帝,msys2 再次附带了“cygpath”,是吗?我记得对 msys 的某些版本感到非常沮丧,其维护者将“cygpath”排除在外,显然只是因为“[您不应该需要这样的东西,因为 Msys 会自动翻译路径名称,即使在环境中也是如此。](https:// sourceforge.net/p/mingw/mailman/message/8686481/)”。 (2认同)

Tra*_*er1 5

经过数小时的搜索(例如“禁用bash文件扩展”)之类的搜索,我通过专门搜索要"bash" "windows" taskkill尝试运行的可执行文件找到了它,然后我找到了这个答案该答案最终对我有用。

cmd " /c taskkill /F /IM ssh-agent.exe"
Run Code Online (Sandbox Code Playgroud)

  • 您不能简单地通过另一个斜杠(例如//)来逃脱斜杠吗?似乎对我有用,来源:http://oldwiki.mingw.org/index.php/switches%20with%20forward%20slashes (2认同)