Linux/Shell Script

[Shell] 변수 기본값 설정

비번변경 2024. 3. 7. 20:00

개요

쉘 스크립트에서 변수를 초기화화하면 환경변수 등으로 설정된 값을 사용하거나 그렇지 않은 경우가 존재할 수 있다. 때문에 쉡 스크립트에서 변수를 초기화할 때 기본값을 설정하는 방법을 제공해주고 있다.

이 글에서는 변수 선언 시 기본값을 설정하는 방법에 대해 적어둔다.

 

 

변수의 상태

쉘 스크립트에서 변수의 상태는 크게 세 가지로 구분할 수 있다.

  • 선언된 변수
    • 값이 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