2010-08-03 271 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