b=${b:-"/data"} 표현식이 작동하는 방식

b=${b:-"/data"} 표현식이 작동하는 방식

크로스 셸 스크립트를 실행 BUILDDIR=${BUILDDIR:-"/data"}하고 실험한 후 원본 BUILDDIR이 존재하고 빈 문자열이 아니면 이를 가져오고, 그렇지 않으면 /data로 설정합니다. 내가 이해하지 못하는 것은 이 표현식이 작동하는 방식, 즉 왜 :, -연산자 및 작동 방식입니다.

답변1

이것은 (다행히도)매개변수 확장. 즉, 다음과 같은 느슨한 정의가 있습니다.

  • ${VAR:-value}$VAR가능하면 사용하고, 그렇지 않으면value
  • ${VAR:=value}가능하면 사용하고 $VAR, 그렇지 않으면 으로 설정하여 $VAR사용 value하세요.value
  • ${VAR:?value}$VAR( 정의되지 않은 경우 종료 ) 및 ${VAR:+value}(반대 :-)가 존재하지만 실제로는 본 적이 없습니다.
  • ${VAR:offset}그리고 ${VAR:offset:length}하위 문자열을 가져옵니다 $VAR.

(접두사 또는 접미사를 제거하거나 일반적인 대체를 수행하는 다른 방법이 많이 있습니다. 위에 링크된 bash 정보 페이지를 참조하십시오.)

관련 정보