:-와 :=는 둘 다 “unset이거나 빈(null) 변수일 때만 동작한다”는 점은 같지만, 값을 변수에 실제로 저장하느냐에서 차이가 난다.
- ${var:-word}
var가 unset 또는 빈 문자열이면 word를 그냥 사용만 한다.
var 변수 자체에는 아무 것도 대입되지 않는다.
- ${var:=word}
var가 unset 또는 빈 문자열이면 word를 var에 대입한 뒤, 그 값을 사용한다.
즉 “기본값을 설정하고, 그 값을 변수에도 저장”하는 형태다.
unset VAR
echo "${VAR:-default}" # 화면에는 default, 하지만 VAR는 여전히 unset
echo "VAR=[$VAR]" # VAR=[]
unset VAR
echo "${VAR:=default}" # 화면에는 default, 그리고 VAR에 default가 들어감
echo "VAR=[$VAR]" # VAR=[default]
여기서 보듯이 ${VAR:-default}는 “그때만 임시로 default 사용”, ${VAR:=default}는 “없으면 default로 채워 넣고 그 이후에도 계속 쓸 수 있게 저장”이라는 차이가 있다.
'지식 > Linux' 카테고리의 다른 글
| shell script - NAME=${1:-"DEFAULT"} (0) | 2025.12.30 |
|---|---|
| ASAN - shadow memory (0) | 2025.11.28 |
| Samba 설정 (1) | 2023.12.03 |
| Raspberry Pi - 디지털 액자 만들기 (0) | 2023.06.10 |
| Raspberry Pi - 디지털 액자 (Dynaframe) (0) | 2023.06.10 |
댓글