2010-08-03 220 views
7

我有一个sh/bash脚本需要调用带有参数的批处理文件(参数是文件名并以DOS/Windows格式给出)。从sh或bash脚本运行/调用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,要么不执行脚本。

我已经试过引述PARAMS来砸这样的:

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

但我没有得到任何结果。

+0

你是从Unix脚本调用Windows批处理脚本,反之亦然?我可以从shell脚本调用批处理脚本, – Raghuram 2010-08-03 10:02:18

+0

我打电话给bash的批处理窗口 – 2010-08-03 10:17:12

回答

10

看来,我需要逃脱从CMD PARAM空间:

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

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

我不知道是否需要躲过/三/,但它工作正常,双方逃脱。

+0

谢谢你的文档!即使找到/ c选​​项,我也遇到了麻烦,我甚至不需要参数,只知道如何从bash中启动脚本。谢谢! – 2011-07-27 12:41:41