我有一个sh/bash脚本,需要用参数调用批处理文件(参数是文件名,以DOS/Windows格式给出)。
基本上我有:
脚本.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.exestart,但不执行脚本。
我试着引用这些参数来抨击:
$COMSPEC /c \"batchfile param1 param2\"
$COMSPEC /c \"\"batchfile param1 param2\"\"
$COMSPEC /c \"\"batchfile \"param1\" \"param2\"\"\"

但我没有得到任何结果。

最佳答案

似乎我需要从命令参数中逃出空间:

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


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

我不确定/from/c是否需要逃逸,但它在两种逃逸方式下都能正常工作。

09-04 01:29