2012-03-15 2 views
2

.sh 파일을 bash로 연결했습니다. 그래서 나는 윈도우 명령 프롬프트에서 bash 스크립트를 성공적으로 실행할 수있다.cygwin bash 스크립트가 인수를 얻지 못합니다.

문제점은 Winodws 명령 행에서 bash 스크립트에 명령 행 인수를 전달할 수 없다는 점입니다.

처음에는 bash로 이동 한 다음 스크립트를 실행하면 명령 줄 인수가 잘 처리됩니다.

myscr.sh이

c:\> myscr.sh a1 a2 
Args , 

하지만 떠들썩한 파티에서 다음

입니다 그래서 경우 :

$ ./myscr.sh a1 a2 
Args a1, a2 

어떤 제안?

+0

붙여 넣은 출력이 일관성이 없어 보입니다. bash는 "Args a1, a1"이 아닌 "Args a1, a2"를 출력해야합니다. '$ #'의 메아리를 추가하고 값을 확인해 보는 것이 어떻습니까? 또한 어쩌면 당신은'bash myscr.sh a1 a2'을 Windows에서 시도해보고 무엇을 얻을 수 있는지 알아보기 –

+0

스크립트 시작 부분에 #! ... 행이 있습니까? 그렇다면 우리에게 보여줄 수 있습니까? 사실 bash에서 호출 할 때조차도 스크립트를 실행하는 bash는 없을 수 있기 때문입니다. (예를 들어, 첫 번째 줄이 #!/usr/bin/python이라면 ./myscr.sh를 호출하면/usr/bin/python myscr.sh가 호출됩니다 (유닉스 서버에서는 샘플이지만 Windows에서는 같은 생각입니다) – huelbois

+0

수정 해줘서 고마워. bash myscr.sh도 작동하지 않았고 $ #의 출력은 '0'입니다. Shebang도 포함되어 있습니다. 간결성을 위해 생략되었습니다. – Ayman

답변

2

이것은 연관 문제로 판명되었습니다.

C:\> assoc .sh 
.sh=sh_auto_file 

C:\> ftype sh_auto_file 
sh_auto_file="C:\cygwin\bin\bash.exe" "%1" 

잘못되었습니다. params를 bash로 넘겨주지 않았습니다. 이를 수정하려면 %*을 ftype에 추가하십시오.

C:\> ftype sh_auto_file="C:\cygwin\bin\bash.exe" %1 %* 

모든 매개 변수가 전달됩니다.

관련 문제