윈도우즈와 리눅스에서 모두 사용가능한 배치파일 작성 (꼼수)

이건 제가 연구해서 생각해낸 꼼수인데… 더 나은 방법이 있으면 알려 주세요.

윈도우즈배치스크립트 문법은 교묘하게 bash랑 안맞게 만들어 놨더군요.
일반적인 방법으로는 어떻게 해도 에러메시지가 한번은 출력되어서…cls로 화면 지우기 등을 해야 하더라구요.
그래서 에러메시지를 리다이렉션 시켜서 메시지를 안보이게 하려고 해도… 문법이 절묘하게 안맞게 되어 있어서… 안되더라구요…
아니면 임시파일에 저장되어야 하는데 그런 경우도… 파일 권한 때문에 오류가 발생 할 수 있어서…
연구 끝에 생각해낸 방법입니다.

요지는

  1. dos 배치 명령의 goto명령으로 윈도우즈와 리눅스 스크립트를 분리한다.
  2. goto명령의 Label을 '(작은따옴표)로 시작하게 만들고…
  3. 그 따옴표를 다음줄에 이어 적어서 dos에서는 파싱하지 않게 한다.
  4. 다음 줄의 따옴표 까지를 bash는 하나의 명령줄로 인식하기 때문에 출력을 재지향하여 오류메시지를 감춘다.

** 단 파일은 유닉스 파일형식으로 저장하여야 bash에서 돌아갑니다. 안그러면 xxxxx\r 명령이 없다고 오류를 내뿜어요 **

setup.sh.cmd

@goto 'Windows_Script
’ 2>/dev/null


리눅스 쉘스크립트 내용

exit

:'Windows_Script


윈도우즈 배치스크립트 내용

배보다 배꼽이 크겠지만 그냥 cygwin깔고 bash 스크립트만 쓰는 게 편하지 않을까나요…

켁 그거랑 이거랑은 다른거죠 !!

cygwin은 윈도우즈에서 리눅스프로그램들을 설치해서 실행하자는 것이고…
이건 하나의 프로그램을 양쪽에서 모두 실행가능 하게 하자는 것이죠.

이걸 만든 계기는 GRUB4DOS를 자동으로 부트메뉴에 넣어주고, 부트매니져를 설치해주는 스크립트를 작성하기 위해서 입니다.

스크립트는 하나만 작성을 해서… 윈도우즈나 리눅스에서 공통적인 작업들을 하자는 것이죠…
물론 자바라는 것도 있지만… 또 펄도 설치만하면 두 시스템 다 돌아가지만 설치를 해야 한다는 단점이 있잖아요.

셋업스크립트나, 환경설정등을 스크립트로 만들때 사용하려고 한 것입니다.
예를 들어 가상머신 자동설정 같은것도 해 볼 수 있자나요?