7

我有一个 sh/bash 脚本,它需要调用带有参数的批处理文件(参数是文件名,并以 DOS/Windows 格式给出)。

基本上我有: script.sh

#!/bin/sh
declare var1=$1
declare var2=$2
dosomething var1 var2
...
<invoke batch script> var1 var2
...
dosomethingelse

GNU bash, version 3.1.0(3)-release (i686-pc-msys)用作外壳,在msysgit

问题是当我从脚本运行时: $COMSPEC /c batchfile param1 param2 要么我得到一个看起来像 bash 的“空提示”,但控制台上没有显示命令结果,要么cmd.exe启动,但不执行脚本。

我试过像这样引用参数来bash:

$COMSPEC /c \"batchfile param1 param2\"
$COMSPEC /c \"\"batchfile param1 param2\"\"
$COMSPEC /c \"\"batchfile \"param1\" \"param2\"\"\"

但我没有得到任何结果。

4

1 回答 1

10

看来我需要从 cmd 参数中转义空间:

$COMSPEC \/c batch-file\ \"$var1\"\ \"$var2\"

或者

$COMSPEC /c batch-file\ \"$var1\"\ \"$var2\"

我不确定 / 来自 /c 是否需要转义,但两种转义方式都可以正常工作。

于 2010-08-03T10:21:04.153 回答