2010-08-03 15 views
7

Parametreler içeren bir toplu iş dosyasını çağırması gereken bir sh/bash komut dosyası var (parametreler dosya adlarıdır ve DOS/Windows biçiminde verilmiştir). TemeldeSh veya bash betiğinden windows batch komut dosyasını çalıştır/çağır

Ben: msysgit

üzerinde script.sh ben kabuk olarak GNU bash, version 3.1.0(3)-release (i686-pc-msys) kullanıyorum

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

, sorun olduğunu ben komut çalıştırdığınızda: ya $COMSPEC /c batchfile param1 param2 Bash gibi görünen bir "boş istemi" alıyorum, ancak konsolda hiçbir komut sonucu görüntülenmiyor, ya cmd.exe başlangıç, ancak komut dosyasını çalıştırmıyor.

Böyle bash params alıntı denedim:

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

Ama hiç bir sonuç alamadım.

+0

Windows toplu iş komut dosyasını Unix komut dosyasından mı alıyorsunuz, tersi mi? – Raghuram

+0

ile kabuk betiğinden bir komut dosyası komutunu çağırabildim, bash –

cevap

10

Ben cmd param gelen boşluk kaçmak için gerekli gibi görünüyor:

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

veya

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

I/c den/kaçmış gerekip gerekmediğini emin değilim ama Her iki yöntem de kaçtı.

+0

'dan Windows toplu işini çağırıyorum./C seçeneğini bulurken bile sorun yaşadım, argümanlara bile ihtiyacım yoktu, sadece betiği bash içinden başlatmayı biliyorum. Teşekkürler! –