중괄호 안의 변수를 평가하는 방법

중괄호 안의 변수를 평가하는 방법

저는 쉘 스크립팅을 처음 접했고 다음 표현을 접했습니다.

${var:-val}그리고${var-val}

${var:+val}그리고${var+val}

${var:=val}그리고${var=val}

그렇다면 그들은 어떻게 평가되고 차이점은 무엇입니까?

답변1

다음은 다양한 형태의 매개변수 확장 및 대안입니다.

  • ${var:-val}valvar설정되지 않았거나 null 인 경우 "기본값" ${var}으로 대체됩니다 .val
  • ${var:=val}먼저 if 가 설정되지 않거나 null val로 할당된 다음 (모든 경우에) ; 로 대체됩니다.varvar${var}
  • ${var:+val}로 대체됩니다아무것도 없다var설정되지 않았거나 null인 경우 , val그렇지 않은 경우.

생략하면 :이러한 모든 정의에서 "또는 null" 부분이 제거됩니다.

다 거기 있어bash(1)맨페이지, 그리고POSIX.

몇 가지 예가 도움이 될 수 있습니다.

unset a
echo "${a:-default}"

default와 같은 을 생성합니다 echo "${a-default}".

a=
echo "${a:-default}"

다시 생성 default하지만 echo "${a-default}"빈 줄을 출력합니다.

a=test
echo "${a:-default}"

test와 같은 을 생성합니다 echo "${a-default}".

unset a
echo "${a:=default}"

가 생산 default되었습니다 (에서 확인 ).adefaultecho "${a}"

+형식은 이상해 보일 수 있지만 여러 단계로 변수를 구성할 때 유용합니다.

PATH="${PATH}${PATH:+:}/blah/bin"

비어 있지 않은 경우에만 앞에 추가됩니다 :. 이렇게 하면 로 시작하는 경로가 방지됩니다./blah/binPATH:

관련 정보