-
와 =
확장자 | 설명 |
---|---|
${변수-문자열} | 변수가 선언되지 않은 경우, 지정한 문자열로 변수를 치환한다. |
${변수:-문자열} | 변수가 선언되지 않았거나 NULL값으로 선언된 경우, 문자열로 변수를 치환한다. |
${변수=문자열} | 변수가 선언되지 않은 경우, 문자열을 변수에 대입하고 문자열로 변수를 치환한다. |
${변수:=문자열} | 변수가 선언되지 않았거나 NULL값으로 선언된 경우, 문자열을 변수에 대입하고 문자열로 변수를 치환한다. |
:
는 NULL값인 경우를 의미한다.-
와 =
는 변수가 선언되지 않은 경우를 의미한다.-
대신 =
쪽을 사용하는 것이 좋다.$
는 프롬프트를 의미한다.$ TEST=Hello
$ echo ${TEST-bye}
Hello
$ echo ${TEST:-bye}
Hello
$ echo ${TEST=bye}
Hello
$ echo ${TEST:-bye}
Hello
$ TEST=""
$ echo ${TEST-Bye}
$ echo ${TEST:-Bye}
Bye
$ echo ${TEST=Bye}
$ echo ${TEST:=Bye}
Bye
:-
와 :=
경우에만 Hello가 출력된다.echo ${TEST:=bye}
명령을 수행하고 나선, TEST변수에 Bye가 대입된다.변수=""
로 선언하면, 변수는 NULL값을 갖게된다.$ unset TEST
$ echo ${TEST-Bye}
Bye
$ echo ${TEST:-Bye}
Bye
$ echo ${TEST=Bye}
Bye
$ unset TEST
$ echo ${TEST:=Bye}
Bye
echo ${TEST=Bye}
명령 수행뒤엔 TEST변수가 Bye값으로 선언되어 있기 때문에 unset
명령을 사용한다.+
와 ?
확장자 | 설명 |
---|---|
${변수+문자열} | 변수가 선언된 경우, 문자열로 변수를 치환한다. |
${변수:+문자열} | NULL값이 아닌 정상적인 값을 갖도록 변수가 선언된 경우, 문자열로 변수를 치환한다. |
${변수?에러 메세지} | 변수가 선언되어있는 경우 변수의 값을 사용하나, 선언되어있지 않은 경우 STDERR로 에러를 출력한다. |
${변수:?에러 메세지} | NULL값이 아닌 정상적인 값을 갖도록 변수가 선언된 경우 변수의 값을 사용하나, 선언되어있지 않은 경우 STDERR로 에러를 출력한다. |
:
는 NULL값을 의미하긴 하는데, 위와 달리 배제적인 맥락이다.$ TEST=Hello
$ echo ${TEST+Bye}
Bye
$ echo ${TEST:+Bye}
Bye
$ echo ${TEST?Bye}
Hello
$ echo ${TEST:?Bye}
Hello
$ TEST=""
$ echo ${TEST+Bye}
Bye
$ echo ${TEST:+Bye}
$ echo ${TEST?Bye}
$ echo ${TEST:?Bye}
bash: TEST: Bye
echo ${TEST:?Bye}
에서 STDERR로 Bye에러 메세지를 출력하는 것을 볼 수 있다.$ unset TEST
$ echo ${TEST+Bye}
$ echo ${TEST:+Bye}
$ echo ${TEST?Bye}
bash: TEST: Bye
$ echo ${TEST:?Bye}
bash: TEST: Bye
변수의 값이 문자열인 경우, 파이썬 문자열 슬라이싱과 같은 기능을 제공하는 확장자들이다.
문자열 인덱스는 0부터 시작한다.
확장자 | 설명 |
---|---|
${변수:시작 위치} | 변수값이 문자열인 경우, 시작위치부터 끝까지 출력한다. |
${변수:시작 위치:길이} | 변수값이 문자열인 경우, 시작위치부터 끝까지 출력한다. |
다음은 실습이다.
$ TEST="Hello World"
$ echo ${TEST:6}
World
$ echo ${TEST:6:3}
Wor