쉘 스크립트에서 "BASH-isms"피하기


37

쉘 스크립트를 검사하고 결함, 이식성 문제, 폴 백이없는 비표준 프로그램 사용, 감가 상각 된 프로그램 사용 등을 지적하는 Perl :: Critic 과 유사한 도구 가 있습니까?

그 실현 set -o posix비 POSIX의 사용을 해제합니다,하지만 0에서 나에게 같은 zsh을 인덱싱 쉘 1부터 시작 배열, bash는 등 내가 알고 싶은 것을 말할하지 않으며, 재 전혀 배열을 지원하지 않는.

답변:


36

있다 checkbashisms은 . 데비안에서는 패키지 관리자 도구의 일부로 제공됩니다 .

dashposh 에서 스크립트를 테스트하십시오 . 둘 다 POSIX가 아닌 구문을 가지고 있지만 스크립트가 둘 다에서 작동하면 대부분의 장소에서 작동 할 가능성이 큽니다. (전형적인 쉘 스크립트는 코너 케이스가 많기 때문에 테스트하기 어렵다는 경고가 있습니다.)

스크립트를 임베디드 Linux 플랫폼으로 이식 가능하게하려면 BusyBox로 테스트하십시오 . 임베디드 시스템의 크기에 따라 BusyBox가 다소 제한 될 수 있습니다. 일부 BusyBox 설치에는없는 기능을 사용하는 스크립트를 사용하는 것이 일반적입니다.

이식성이 아닌 것은 쉘에서만 제공되는 것이 아니라 외부 유틸리티에서도 제공됩니다. OpenBSD와 Solaris는 POSIX 기능을 가진 유틸리티를 보유하는 경향이 있으며 그 이상은 아니므로 이식성을 테스트하기에 좋습니다.

POSIX 사양 과이 스레드에 언급 된 기타 리소스 (특히 autoconf 매뉴얼 ) 를 참조하려고합니다 . 그러나 그것은 문서이며, 실수로 기능을 사용하면 도움이되지 않습니다.

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