이건 제가 연구해서 생각해낸 꼼수인데… 더 나은 방법이 있으면 알려 주세요.
윈도우즈배치스크립트 문법은 교묘하게 bash랑 안맞게 만들어 놨더군요.
일반적인 방법으로는 어떻게 해도 에러메시지가 한번은 출력되어서…cls로 화면 지우기 등을 해야 하더라구요.
그래서 에러메시지를 리다이렉션 시켜서 메시지를 안보이게 하려고 해도… 문법이 절묘하게 안맞게 되어 있어서… 안되더라구요…
아니면 임시파일에 저장되어야 하는데 그런 경우도… 파일 권한 때문에 오류가 발생 할 수 있어서…
연구 끝에 생각해낸 방법입니다.
요지는
- dos 배치 명령의 goto명령으로 윈도우즈와 리눅스 스크립트를 분리한다.
- goto명령의 Label을 '(작은따옴표)로 시작하게 만들고…
- 그 따옴표를 다음줄에 이어 적어서 dos에서는 파싱하지 않게 한다.
- 다음 줄의 따옴표 까지를 bash는 하나의 명령줄로 인식하기 때문에 출력을 재지향하여 오류메시지를 감춘다.
** 단 파일은 유닉스 파일형식으로 저장하여야 bash에서 돌아갑니다. 안그러면 xxxxx\r 명령이 없다고 오류를 내뿜어요 **
setup.sh.cmd
@goto 'Windows_Script
’ 2>/dev/null
…
리눅스 쉘스크립트 내용
…
exit
:'Windows_Script
…
윈도우즈 배치스크립트 내용
…