티스토리 뷰

기본값을 사용하거나 치환하는 것들을 정리해 봅니다.

 

 

위의 스크립트를 'first.sh' 로 저장하고 실행시킨 결과를 보겠습니다.

 

 

3 행은 bash version 확인을 한 것인데, mac에서는 기본적으로 제공하는 /bin/bash가 낡아서...

version 에 따라 다른 결과를 주는 경우는 따로 표시할 것이고 여기서는 중요하지 않습니다.

 

5 행을 보면 정의한 적이 없는 변수 'num'이 등장했습니다.

 

${name-value}

 

name 변수가 정의되지 않은 경우 value(기본적으로 문자열)을 사용합니다.

 

7 행에서는 위와 같은 방식으로 기본값을 사용한 경우 name 값이 정의되는 것이 아님을 확인할 수 있습니다.

 

 

이번에는 변수 num 의 값을 null 로 두었습니다. 실행 결과는 ?

 

 

기본값이 적용되지 않습니다. 

변수가 선언되었지만 null 인 경우에도 기본값을 적용시키고 싶다면 ' : ' 를 사용합니다.

 

 

결과를 확인하면 

 

 

기본값이 적용됨을 확인할 수 있습니다. 요약하면

 

${name-value}  #name 이 undefined 인 경우에 value 사용
${name:-value} #name 이 undefined 이거나 null인 경우에 value 사용

 

입니다. 

그리고 하는 김에 name 값을 value로 만들어 주는 방법도 있습니다. ' - ' 대신 ' = '를 사용하면 됩니다.

 

 

결과를 확인해 보겠습니다.

 

 

7 행에서 num 을 출력시켰을 때, 값이 출력되는 것을 확인할 수 있습니다.

 

${name=value}   # name 이 undefined 일 때, value 사용하고 name 에 value 를 저장까지 해준다.
${name:=value}  # name 이 undefined 혹은 null 이면 value 를 사용하고 name 에 value 저장.

 

흠, 그러니까 ' : ' 는 null 과 undefined 를 같은 방식으로 취급하겠다는 거군요.

 

몇 가지 더 알아 보겠습니다. 

어떤 변수의 부재가 error 인 상황이라면 다음과 같은 방식을 사용하면 됩니다.

 

${name?value}    # undefined(변수 미선언) 이면 value 출력하고 script 종료!
${name:?value}   # undefined 혹은 null 이면 value 출력하고 script 종료!

 

이번 편의 마지막은 헷갈리는 ' + ' 입니다. ' : ' 은 null 과 undefined 를 같이 취급한다는 것을 기억합시다.

 

${name+value}   # undefined 가 아니면 즉, name 에 값이 있거나 null 이면 value 를 사용
${name:+value}  # undefined 혹은 null 이 아니면 즉, name 에 값이 있으면 value 를 사용

 

' : ' 이 있으면 null 과 undefined 를 같이 취급하고, 없으면 undefined 만 적용이 됩니다!

 

 

반응형

'Programming Language > Shell Programming' 카테고리의 다른 글

Bash Scripting 07 - if  (0) 2022.07.27
Bash Scripting 06 - 문자열  (0) 2022.07.20
Bash Scripting 04 - 변수확장(2)  (0) 2022.07.14
Bash Scripting 03 - Globbing  (0) 2022.07.11
Bash Scripting 02 - 변수확장(1)  (0) 2022.07.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함