我有一个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.exe
start,但不执行脚本。我试着引用这些参数来抨击:
$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是否需要逃逸,但它在两种逃逸方式下都能正常工作。