zsh 등의 shell script에서 다음과 같은 형태로 변수할당이 되는 경우가 있음.
rval=${ZDOTDIR:-$HOME}
이 경우, ZDOTDIR
란 변수가 비어있지 않은 경우에는 rval
는 ZDOTDIR
과 같은 값을 가지게 된다.
rval=$ZDOTDIR
과 같은 결과.- 변수가 비어있다는 뜻은 empty 문자열이거나 undefined인 경우를 가르킴.
하지만, ZDOTDIR
란 변수가 비어있는 경우엔 HOME
이라는 변수의 값이 할당된다. 즉 다음과 같은 결과임.
rval=$HOME
다른 유용한 할당방법으로는 :=
이 있음.
이는 기존에 할당이 되어있는지를 체크하여 기존에 값을 가진 경우는 그대로 유지하고,
비어있는 경우에만 할당을 수행한다.
echo "${VAR1:=default}"
VAR
가 이전에 할당된 경우에는 그 값을 그대로 유지.VAR
이 이전에 정의안된 경우나 빈문자열을 값으로 가진 경우,default
문자열을 값으로 가지게 됨.
다음의 script는 사용법을 간략히 보여줌.
#!/bin/env bash
t=predefined
echo ${t:=new_value}
unset t
echo ${t:=new_value}
결과는 다음과 같음.
predefined
new_value
다음의 표는 위의 방법들을 포함하여 다른 다양한 방법을 정리한 것임.

References
Parameter expansion [Bash Hackers Wiki]
One core functionality of Bash is to manage parameters. A parameter is an entity that stores values and is referenced by a name, a number or a special symbol. Parameter expansion is the procedure to get the value from the referenced entity, like expanding
web.archive.org
https://unix.stackexchange.com/questions/122845/using-a-b-for-variable-assignment-in-scripts
Using "${a:-b}" for variable assignment in scripts
I have been looking at a few scripts other people wrote (specifically Red Hat), and a lot of their variables are assigned using the following notation VARIABLE1="${VARIABLE1:-some_val}" or some exp...
unix.stackexchange.com
'Linux' 카테고리의 다른 글
[linux] cut 사용법 (2) | 2023.12.11 |
---|---|
[Linux] tmux (Terminal MUltipleXer) 사용하기 (1) | 2023.11.19 |
[Linux] SystemV, BSD, 그리고 Linux 간략 역사 (0) | 2023.10.23 |
[Linux] 특정 조건의 파일들 찾아 특정 명령어 적용하기 : find -exec (1) | 2023.10.22 |
[Linux] SIGNAL 에 대한 요약 정리. (0) | 2023.10.22 |