상기 Autotools가에서 큐 보자 - 아마도에 의해 증강 Bourne 씨와 POSIX 쉘의 최소 공통 분모에 스틱을 sed
- 당신이 쓰기 뭔가가해야 일이 있으면 모든 곳 . 문제가있는 시스템이있을 수 있지만 다시 작성하여 이러한 문제를 해결할 수 있습니다.
예를 들어, 일부 고대 시스템의 경우 test
일명 확장 오류에 문제가 있습니다 [
.
if [ $foo = bar ] ; then...
그래서 Autoconf의 연습을 다시 작성하는 것입니다 과 같이, 하나의 문자 접두사와 따옴표 :
if [ x"$foo" = "xbar" ] ; then...
"x$foo"
여기 에서도 사용할 수 있습니다. 가능성에 대한이 경비는 그 $foo
에게 유효한 옵션이 될 수 test(1)
및 때문에 [
별명입니다 test
, 그것은 표현을 잘못 해석 할 수있다. 해결책은 알 수없는 인수가 [
항상로 시작 하는 상황을 설정 x
하는 것 [
입니다. 즉,에 특별한 의미를 가질 수 없습니다 .
(Autoconf도 test
대신을 사용 하는 것이 [
좋지만이 조언은 구문에서 사용되는 M4 와의 충돌 가능성에 대한 반응으로 발생 [
합니다.)
awk는 POSIX 이므로 이론적으로 모든 곳에서 사용할 수 있습니다. Busybox에도 있으므로 awk
매우 제한적인 임베디드 Linux 시스템에서도 구현할 수 있습니다. 그래도, 내가하지 않고 시스템 건너 덜 놀랄 것 awk
보다 더 sed
. 복잡성이 줄어든다고 생각합니다. 단순한 도구는 공격적인 심사에서 살아남을 가능성이 높습니다.
Perl은 널리 알려진 표준, POSIX 또는 기타의 일부가 아니므로 대상 환경에 대해 사전에 아무것도 모른다면 간단히 신뢰할 수 없습니다. Perl은 기본적으로 다음에 설치되지 않습니다.
- 시그윈
- FreeBSD와 NetBSD
- Slackware를 포함한 일부 Linux의 경우 "최소"설치
- 사용자 영역을 위해 Busybox를 주로 사용하는 많은 임베디드 Linux
Autoconf 매뉴얼에는 휴대용 쉘 프로그래밍에 관한 장이 있으며 도움이 될 것입니다. 마지막 섹션 커버 도구처럼 sed
, awk
그리고 많은 다른 사람.