티스토리 뷰
기본값을 사용하거나 치환하는 것들을 정리해 봅니다.
위의 스크립트를 '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
- stack
- javascript array
- persistent segment tree
- bash script
- dynamic programming
- RUBY
- Vim
- lazy propagation
- number theory
- C++ big number
- 세그먼트 트리
- max flow
- python3
- Shell Programming
- Aho-Corasick
- bash
- segment tree
- 백준
- shell
- fenwick tree
- nearest common ancestor
- JavaScript
- 다익스트라
- BOJ
- Reference
- map
- Dijkstra
- math font
- 정수론
- script
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |