我有一个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
作为shell
问题是当我从脚本运行时:
$COMSPEC /c batchfile param1 param2
或者我得到一个看似bash的“空提示”,但是控制台上没有显示命令结果,cmd.exe
启动,但不执行脚本。
我试过像这样引用这些参数:
$COMSPEC /c \"batchfile param1 param2\"
$COMSPEC /c \"\"batchfile param1 param2\"\"
$COMSPEC /c \"\"batchfile \"param1\" \"param2\"\"\"
但我没有得到任何结果。
答案 0 :(得分:10)
似乎我需要从cmd param中逃离空间:
$COMSPEC \/c batch-file\ \"$var1\"\ \"$var2\"
或
$COMSPEC /c batch-file\ \"$var1\"\ \"$var2\"
我不确定/ from / c是否需要进行转义,但两种方式都可以正常转义。