2010-08-03 5 views
7

매개 변수가있는 배치 파일을 호출해야하는 sh/bash 스크립트가 있습니다 (매개 변수는 파일 이름이고 DOS/Windows 형식으로 제공됨). 기본적으로sh 또는 bash 스크립트에서 Windows 일괄 스크립트 실행/호출

내가 가진 : msysgit

script.sh 내가 쉘로 GNU bash, version 3.1.0(3)-release (i686-pc-msys)을 사용하고

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

을, 문제는 그 난 스크립트에서 실행하면 하나 $COMSPEC /c batchfile param1 param2 bash와 같은 "빈 프롬프트"가 나타나지만 콘솔에 명령 결과가 표시되지 않습니다. cmd.exe이 시작되지만 스크립트는 실행되지 않습니다.

나는 이런 식으로 비난하는 PARAMS을 인용 시도했습니다

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

하지만 어떤 결과를 얻을하지 않았다.

+0

유닉스 스크립트에서 윈도우 배치 스크립트를 호출합니까? – Raghuram

+0

으로 쉘 스크립트에서 배치 스크립트를 호출 할 수있었습니다. bash에서 windows 배치를 호출하고 있습니다. –

답변

10

그것은 내가 cmd를의 PARAM에서 공간을 탈출하기 위해 필요한 것 같습니다 :

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

또는

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

의 I/C에서/이스케이프해야하는지 여부를 모르겠어요을하지만, 그것은 두 가지 방법으로 모두 잘 작동합니다.

+0

감사합니다. 문서화 해 주셔서 감사합니다! 나는/c 옵션을 찾는데도 문제가 있었고, 인자가 필요조차 없었고 bash에서 스크립트를 시작하는 법만 알고있었습니다. 감사! –

관련 문제