POSIX sh는 어떤 유형의 문자열 보간을 지원합니까?

POSIX sh는 어떤 유형의 문자열 보간을 지원합니까?

POSIX sh 에서 허용됩니까 "${blah}", 아니면 bash 파생 쉘이 필요합니까?

답변1

"${blah}"이식 가능한 쉘 구문 입니다 "$blah". 이는 기존 Bourne 쉘뿐만 아니라 모든 POSIX 호환 쉘에 적용됩니다. POSIX에는 변수 확장을 위한 추가 기능도 필요합니다.

  • ${VAR#PREFIX}${VAR##PREFIX}, 및 를 사용하여 ${VAR%SUFFIX}문자열 작업을 수행합니다 ${VAR%%SUFFIX}.
  • 설정되지 않은 변수를 처리하려면 , 및 조건문을 사용하고, ${VAR-DEFAULT}및 의 설정되지 않거나 빈 변형을 사용하세요.${VAR=DEFAULT}${VAR+FALLBACK}${VAR?MESSAGE}:-:=:+:?
  • 가변 길이 ${#VAR}.

모든 경우에 큰따옴표를 사용하지 않는 한(또는 여러 단어를 허용하지 않는 다른 컨텍스트) 결과는 $…공백 분할(보다 정확하게는 문자 분할) 및 와일드카드 확장(와일드카드 확장)을 거칩니다.$IFS

사양을 읽으면 POSIX에 무엇이 존재하는지 확인할 수 있습니다. 최신 버전의 POSIX오픈그룹 기본사양(선택적 구성 요소 없음). 이전 버전은 다음의 하위 집합입니다.단일 유닉스 v2.

오늘날 POSIX 셸이 없는 Unix 계열 시스템은 극히 드뭅니다. /bin/sh일부 시스템, 특히 Solaris에서는 POSIX Bourne 쉘이 아니지만 POSIX 쉘을 사용할 수 있습니다( /usr/xpg4/bin/shSolaris에서는 /usr/xpg4/binPATH에서 이를 발전시켜야 합니다). /usr/binBourne 쉘과의 호환성이 필요한 경우, 약간 다른 기능 세트를 가진 많은 버전의 sh가 있으므로 관심 있는 시스템의 매뉴얼 페이지를 확인하십시오.Sven Mascheck는 많은 정보가 포함된 페이지를 관리합니다..

답변2

POSIX 사양 섹션에서매개변수 확장설명하다...

매개변수 확장 형식은 다음과 같습니다.

${표현}

여기서 표현식은 "}" 앞의 모든 문자와 일치하는 것으로 구성됩니다.

전단

매개변수 확장의 가장 간단한 형태는 다음과 같습니다.

${매개변수}

그럼 대략큰따옴표...

큰따옴표( "" )로 묶인 문자는 백틱 문자를 제외하고 큰따옴표 안의 모든 문자의 리터럴 값을 유지해야 하며 다음과 같습니다.

$의달러 표시매개변수 확장(매개변수 확장 참조), 명령 대체 형식(명령 대체 참조) 및 산술 확장(산술 확장 참조)을 도입하는 특별한 의미는 유지되어야 합니다.

그렇죠.

관련 정보