유닉스 줄 끝으로 배치 파일을 작성하는 것이 안전합니까?


15

유닉스 라인 엔딩으로 작성 되었기 때문에 배치 파일에서 버그를 발견했다고 생각합니다. 이것은 Windows에서 배치 파일을 실행하는 cmd.exe의 알려진 문제입니까?


1
나는 문제가 없었으며, 항상 유닉스 줄 끝을 사용합니다. 그러나 이것이 내가 놓칠만큼 운이 좋았던 문제가 없다는 것을 의미하지는 않습니다.
Zoredache

2
어떤 버그가 발생 했습니까? 명령이 시작되지 않습니까? 또는 메모장으로 파일을 열 때 줄 끝이없는 것처럼 보입니까?
Hennes

답변:


11

이것은 의도적으로 "버그"가 아닙니다. Windows 개행은 "\ r \ n"... 또는 "캐리지 리턴"및 "새 라인"조합으로 정의되지만 * nix 맛은 캐리지 리턴을 생략하는 것을 선호합니다. 가능하면 Windows의 어느 곳에서나 항상 "\ r \ n"을 사용해야합니다. 다른 것은 잘못 해석 될 수 있습니다. 예기치 않은 결과가 발생합니다.


call : label이 레이블로 이동하지 않는 문제가 발생했지만 나중에 파일에서 동일한 호출이 레이블로 이동했습니다. 문제의 파일은 \ n 줄 끝을 사용하고있었습니다. 프로젝트의 모든 배치 파일에 대해 \ r \ n 줄 끝으로 전환했는데 문제가 사라졌습니다. \ n 엔딩으로 다시 테스트하지 않아 단 한 번의 우연이 아닌지 확인했습니다 (스크립트를 실행하는 데 거의 1 시간이 걸립니다).
Samuel

2
메모장은 Unix 줄 끝을 처리 할 수 ​​없지만 워드 패드는 PowerShell, 다른 많은 기능도 처리 할 수 ​​있습니다.
Michael Hampton

.bat 파일이 nix 줄 끝에서 올바르게 작동하지 않을 때 더 많은 예제를 제공 하시겠습니까?
Michal Kordas

@MichalKordas 모든 Microsoft OS 및 * nix 배포판의 모든 버전을 거치지 않고 테스트하지 않아도 이는 큰 문제입니다. 이것은 실제로 주제에 대한 자세한 토론을 할 곳이 아닙니다. 모범 사례는 Windows가 \ r \ n을 사용하고 * nix가 \ n을 사용하며 때로는 mac이 \ r 만 사용하는 것입니다. Windows 만 배치 파일을 사용하므로 \ r \ n을 사용해야한다고 가정하는 것이 가장 좋습니다.
TheCompWiz

4

보인다 배치하는 것이 레이블 때 건너 뜁니다 LF(유닉스 라인 엔딩이)가 사용됩니다 .bat파일.


3

배치 파일의 경우 유닉스 줄 끝과 창 줄 끝 사이에는 차이가 없습니다.

goto, call또는 줄 바꿈 변수도 생성은 모두 스타일로 작동합니다.

배치 파서는 백분율 확장 단계 직후 캐리지 리턴을 제거하므로 큰 역할을 수행하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.