在cygwin中转义'run'命令行选项

时间:2009-02-05 17:21:33

标签: bash cygwin

我遇到了通过“运行”将参数传递到Windows端的问题

为了演示,它看起来像这样:

run C:\foo.exe /BUILD

'/ BUILD'参数永远不会传递给可执行文件。有人知道 一种解决这个问题的方法?

谢谢!

4 个答案:

答案 0 :(得分:4)

经过大量研究后,正确的答案是通过批处理文件传递 - 强制'run'只执行一个cmd,将所有执行都传递给批处理文件。

答案 1 :(得分:0)

我没有经常使用Cygwin,但可能:

run 'c:\foo.exe /BUILD'

(如果不是单一 - 那么可能是双引号?)

答案 2 :(得分:0)

您是否尝试将其括在引号中,如:

run "C:\foo.exe /BUILD"

我想知道shell是否混淆了参数属于谁 - 也就是说,“run”正在消耗/ BUILD,而不是传递它。

答案 3 :(得分:0)

foo.exe应该做什么,你怎么知道它没有得到/ build命令行选项?如果你做info run,你会得到:

Windows  programs  are  either  GUI  programs or console programs. When
started console  programs  will  either  attach  to an existing console
or  create a new one. GUI programs can  never attach to an exiting con-
sole. There is no way to attach to an existing console but hide  it  if
started as GUI program.

run  will  do this for you. It works  as intermediate and starts a pro-
gram but makes the console window hidden.

最后一点很重要 - 它隐藏了控制台窗口。所以,你会看到这样的事情:

</cygdrive/d/sandbox> $ run ls -la
</cygdrive/d/sandbox> $

但是如果你改为运行它,你会看到不同的东西:

</cygdrive/d/sandbox> $ cat foo.lst
cat: foo.lst: No such file or directory
</cygdrive/d/sandbox> $ run ls -la >foo.lst
</cygdrive/d/sandbox> $
</cygdrive/d/sandbox> $ cat foo.lst
total 9272280
drwx------+ 15 jcasadonte     ????????             0 Feb  7 10:39 .
drwxrwxr-x+ 14 Administrators SYSTEM               0 Feb  7 00:44 ..
-rwx------+  1 jcasadonte     ????????         26300 Apr 10  2006 ATT01779.jpg
[...etc...]

第一个命令正在运行,但它正在打印到一个不存在的控制台窗口。

注意:我会用DOS命令解释器完成示例,因为它似乎正在尝试,但XP cmd.exe不处理'&gt;'正确,并将其交给run而不是ls