일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Yes
- 데이터분석
- 빅데이터
- 인공지능
- 컴퓨터비전
- 데이터과학
- 네트워크
- 네트워크보안
- 보안
- 사이버보안
- 클라우드컴퓨팅
- 데이터구조
- 웹개발
- 자바스크립트
- 자료구조
- 소프트웨어
- 2
- 컴퓨터과학
- 코딩
- 소프트웨어공학
- 딥러닝
- 컴퓨터공학
- 머신러닝
- 파이썬
- 프로그래밍언어
- 데이터베이스
- 버전관리
- 프로그래밍
- I'm Sorry
- 알고리즘
- Today
- Total
스택큐힙리스트
Bash에서 변수가 설정되었는지 확인하는 방법 본문
Bash에서 변수가 설정되어 있는지 어떻게 알 수 있나요?
예를 들어, 사용자가 함수의 첫 번째 매개변수를 제공했는지 확인하는 방법은 무엇인가요?
function a {
# if $1 is set ?
}
답변 1
(보통) 올바른 방법입니다.
if [ -z ${var+x} ]; then echo var is unset; else echo var is set to '$var'; fi
$#@^@&&@$&가 어디인가요? $@$$$$*$&가 설정되지 않은 경우 아무것도 평가되지 않으며, 그렇지 않으면 문자열 $#^$^#^$&으로 대체합니다.
인용문 탈선
인용구는 생략될 수 있습니다 (따라서 우리는 ${var+x} 대신 ${var+x} 를 말할 수 있습니다) 이 문법과 사용법은 따옴표가 필요하지 않은 것을 보장하므로 (마침표가 없으므로 따옴표가 필요하지 않습니다), 또는 아무 것도 확장되지 않습니다 ( 이는 [ -z ] 와 같은 값 (true)으로 평가됩니다).
그러나 따옴표는 안전하게 생략될 수 있지만 모든 사람들에게 즉시 명확하지 않았으며 (주요 Bash 코더 인 the first author of this quotes explanation조차도 분명하지 않았습니다.), 때로는 [ -z ${var+x} ]와 같이 따옴표를 사용하여 솔루션을 작성하는 것이 더 나을 수 있으며 O(1) 속도 페널티의 매우 작은 비용이 들 수 있습니다. 첫 번째 저자는 이러한 솔루션을 사용하는 코드 옆에 이 주소를 포함한 설명으로 이 답변의 URL을 추가하였습니다. 이제 따옴표를 안전하게 생략할 수 있는 이유에 대한 설명이 포함되어 있습니다.
(자주) 잘못된 방법
if [ -z $var ]; then echo var is blank; else echo var is set to '$var'; fi
이것은 종종 잘못됩니다. 왜냐하면 변수가 설정되지 않았으면서 빈 문자열로 설정된 변수를 구별하지 못하기 때문입니다. 즉, 만약 var='' 이라면, 위의 해결책은 var is blank를 출력할 것입니다.
언셋(unset)과 빈 문자열로 설정(set to the empty string) 사이의 구분은 사용자가 확장 기능이나 추가 속성 목록을 지정해야하는 상황에서 근본적으로 중요합니다. 지정하지 않으면 값이 비어 있지 않은 기본값으로 설정되지만 빈 문자열을 지정하면 스크립트가 빈 확장 기능이나 추가 속성 목록을 사용하도록해야합니다.
그러나 모든 상황에서 이 구분은 필수적이지 않을 수 있습니다. 그런 경우에는 [ -z $var ]가 충분합니다.
답변 2
Bash에서 변수가 설정되었는지 확인하는 방법은 매우 쉽습니다. 이 기능은 Bash 스크립트 작성 시 매우 유용합니다. 변수가 설정되지 않으면 스크립트는 예기치 않은 동작을 할 수 있습니다. 충돌을 방지하려면 변수가 설정되었는지 여부를 반드시 확인해야합니다. 이 글에서는 Bash에서 변수가 설정되었는지 확인하는 몇 가지 방법을 알아보겠습니다.
첫 번째 방법은 if문을 사용하는 것입니다. if [ -z $var ]라고 작성하면 변수가 설정되지 않으면 조건이 참이 됩니다. -z 옵션은 변수가 빈 문자열인지 검사합니다.
두 번째 방법은 unset 명령어를 사용하여 변수를 삭제하는 것입니다. 이 방법을 사용하면 스크립트의 다른 부분에서 변수를 사용하지 않도록 할 수 있습니다.
세 번째 방법은 nullglob을 사용하는 것입니다. 이 방법은 Bash에서 파일명 패턴이 매치되지 않으면 빈 리스트를 반환합니다. 변수가 설정되지 않았을 때 이 방법은 빈 문자열을 반환하는 문제를 방지할 수 있습니다.
네 번째 방법은 parameter expansion을 사용하는 것입니다. 이 기능은 변수가 설정되지 않았을 때 기본 값을 설정할 수 있습니다. 만약 echo ${var:-default}와 같이 작성하면, 변수 var가 설정되지 않았을 때 default 값을 출력합니다.
따라서 Bash에서 변수가 설정되었는지 확인하는 방법은 매우 간단합니다. 위에서 언급한 방법 중 하나를 사용하면 스크립트의 안정성을 높이고 예기치 않은 문제를 방지할 수 있습니다.