개요
쉘 스크립트에서 변수를 초기화화하면 환경변수 등으로 설정된 값을 사용하거나 그렇지 않은 경우가 존재할 수 있다. 때문에 쉡 스크립트에서 변수를 초기화할 때 기본값을 설정하는 방법을 제공해주고 있다.
이 글에서는 변수 선언 시 기본값을 설정하는 방법에 대해 적어둔다.
변수의 상태
쉘 스크립트에서 변수의 상태는 크게 세 가지로 구분할 수 있다.
- 선언된 변수
- 값이 NULL이 아닌 변수
- 값이 NULL인 변수
- 선언되지 않은 변수
쉘 스크립트는 변수의 상태와 사용한 확장자에 따라 기본값으로 초기화되는 조건이 달라질 수 있다.
- / =
참조하는 변수가 선언되지 않은 경우에는 -, :, = 등의 확장자를 사용하여 변수의 기본값을 초기화한다.
확장자 | 설명 |
${VAR-value} | VAR이 선언되지 않은 경우, value를 반환한다. |
${VAR:-value} | VAR이 선언되지 않았거나 값이 NULL인 경우, value를 반환한다. |
${VAR=value} | VAR이 선언되지 않은 경우, VAR을 value로 초기화하고 value를 반환한다. |
${VAR:=value} | VAR이 선언되지 않았거나 값이 NULL인 경우, VAR을 value로 초기화하고 value를 반환한다. |
-를 사용하면 명령어 수행 후 참조하는 변수 VAR의 값을 변경하지 않는다.
하지만 =을 사용하면 명령어 수행 후 참조하는 변수 VAR의 값을 변경한다는 차이점이 존재한다.
+
-와 반대로 참조하는 변수가 선언된 경우에도 변수의 기본값을 초기화할 수 있다. +, : 확장자를 사용한다.
확장자 | 설명 |
${VAR+value} | VAR이 선언된 경우, value를 반환한다. |
${VAR:+value} | VAR이 NULL이 아닌 값으로 선언된 경우, value를 반환한다. |
+를 사용하면 -와 반대로 참조하는 변수가 선언된 경우에 변수를 초기화한다.
?
? 확장자를 사용하면 참조하는 변수가 선언되지 않은 경우 기본값으로 초기화하는 대신 에러 메세지를 출력하도록 할 수 있다.
확장자 | 설명 |
${VAR?ERR} | VAR이 선언되지 않은 경우, STDERR로 ERR를 출력한다. |
${VAR:? ERR} | VAR이 선언되지 않았거나 값이 NULL인 경우, STDERR로 ERR를 출력한다. |
참고 문서
https://web.deu.edu.tr/doc/oreily/unix/ksh/ch04_03.htm