2010-08-03 25 views
7

Tengo un script sh/bash que necesita llamar a un archivo por lotes con parámetros (los parámetros son nombres de archivos y se dan en formato DOS/Windows).Ejecutar/invocar script de lotes de Windows desde el script sh o bash

Básicamente tengo: script.sh

#!/bin/sh 
declare var1=$1 
declare var2=$2 
dosomething var1 var2 
... 
<invoke batch script> var1 var2 
... 
dosomethingelse 

estoy usando GNU bash, version 3.1.0(3)-release (i686-pc-msys) como la concha, en msysgit

El problema es que cuando corro desde el guión: $COMSPEC /c batchfile param1 param2 cualquiera Obtengo un "mensaje vacío" que se parece a bash, pero no se muestra ningún resultado de comando en la consola, ya sea cmd.exe inicio, pero no ejecuta el script.

He intentado citar los parametros para golpear la siguiente manera:

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

Pero no he tenido ningún resultado.

+0

¿Está llamando al script por lotes de Windows desde el script Unix o viceversa? Pude llamar a un script por lotes desde el script de shell con – Raghuram

+0

Estoy llamando a Windows Batch desde bash –

Respuesta

10

Parece que necesitaba para escapar del espacio del parámetro cmd:

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

o

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

No estoy seguro de si el/a/c necesita ser escapado, pero funciona bien en ambos sentidos se escapó.

+0

¡Gracias por documentar! Tuve problemas incluso para encontrar la opción/c, ni siquiera necesitaba argumentos, solo sé cómo iniciar el script desde bash. ¡Gracias! –

Cuestiones relacionadas