크로스 셸 스크립트를 실행 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 정보 페이지를 참조하십시오.)