![b=${b:-"/data"} 표현식이 작동하는 방식](https://linux55.com/image/151127/b%3D%24%7Bb%3A-%22%2Fdata%22%7D%20%ED%91%9C%ED%98%84%EC%8B%9D%EC%9D%B4%20%EC%9E%91%EB%8F%99%ED%95%98%EB%8A%94%20%EB%B0%A9%EC%8B%9D.png)
크로스 셸 스크립트를 실행 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 정보 페이지를 참조하십시오.)