스택큐힙리스트

Bash에서 변수가 설정되었는지 확인하는 방법 본문

카테고리 없음

Bash에서 변수가 설정되었는지 확인하는 방법

스택큐힙리스트 2023. 3. 22. 08:25
반응형

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에서 변수가 설정되었는지 확인하는 방법은 매우 간단합니다. 위에서 언급한 방법 중 하나를 사용하면 스크립트의 안정성을 높이고 예기치 않은 문제를 방지할 수 있습니다.

반응형
Comments