2010-08-03 3 views
7

У меня есть сценарий sh/bash, который должен вызывать пакетный файл с параметрами (параметры - это имена файлов и указаны в формате DOS/Windows).Запустить/вызвать оконный пакетный сценарий из сценария sh или bash

В принципе у меня есть: 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

Проблема заключается в том, что, когда я бегу от сценария: $COMSPEC /c batchfile param1 param2 либо Я получаю «пустое приглашение», которое выглядит как bash, но результат команды не отображается на консоли, либо cmd.exe start, но не выполняет сценарий.

Я попытался процитировать Params колотить так:

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

Но я не получил никакого результата.

+0

Есть ли у вас вызов пакетного сценария windows из сценария Unix или наоборот? Мне удалось вызвать пакетный скрипт из сценария оболочки с помощью – Raghuram

+0

. Я звоню в пакет Windows из bash. –

ответ

10

Кажется, что мне нужно, чтобы избежать пространство от CMD парам:

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

или

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

я не уверен, нужно ли/с/с, чтобы быть экранированы, но он отлично работает в обоих направлениях.

+0

Спасибо за документирование! У меня были проблемы даже с поиском опции/c, мне даже не нужны аргументы, только знаю, как запустить скрипт изнутри bash. Благодаря! –

Смежные вопросы