bash 변수가 0인지 확인합니다.
bash 변수 깊이가 있는데 0과 같은지 테스트하려고 합니다.이 경우 스크립트 실행을 중지합니다.지금까지 제가 가진 것은:
zero=0;
if [ $depth -eq $zero ]; then
echo "false";
exit;
fi
불행하게도, 이것은 다음과 같은 결과를 낳습니다.
[: -eq: unary operator expected
(번역으로 인해 약간 부정확할 수 있음)
스크립트가 작동하도록 수정하려면 어떻게 해야 합니까?
당신의 것처럼 보입니다.depth
변수가 설정되지 않았습니다.이것은 그 표현이[ $depth -eq $zero ]
된다[ -eq 0 ]
after bash는 변수 값을 식으로 대체합니다.여기서 문제는.-eq
연산자가 하나의 인수(0)만 있는 연산자로 잘못 사용되지만 두 개의 인수가 필요합니다.그렇기 때문에 단항 연산자 오류 메시지가 표시됩니다.
편집: Doktor J가 이 답변에 대한 코멘트에서 언급했듯이, 체크에서 설정되지 않은 변수와 관련된 문제를 피하는 안전한 방법은 변수를 에 포함하는 것입니다.""
설명은 그의 의견을 참고하세요.
if [ "$depth" -eq "0" ]; then
echo "false";
exit;
fi
변수와 함께 사용되는 설정되지 않은 변수[
bash 명령이 비어 있는 것으로 나타납니다.아래 테스트를 사용하여 이를 확인할 수 있습니다. 모든 테스트는 다음과 같습니다.true
왜냐면xyz
비어 있거나 설정되지 않음:
if [ -z ] ; then echo "true"; else echo "false"; fi
xyz=""; if [ -z "$xyz" ] ; then echo "true"; else echo "false"; fi
unset xyz; if [ -z "$xyz" ] ; then echo "true"; else echo "false"; fi
이중 괄호(( ... ))
는 산술 연산에 사용됩니다.
이중 대괄호[[ ... ]]
다음 연산자를 사용하여 숫자를 비교 및 검사할 수 있습니다(정수만 지원됨).
· NUM1 -eq NUM2 returns true if NUM1 and NUM2 are numerically equal.
· NUM1 -ne NUM2 returns true if NUM1 and NUM2 are not numerically equal.
· NUM1 -gt NUM2 returns true if NUM1 is greater than NUM2.
· NUM1 -ge NUM2 returns true if NUM1 is greater than or equal to NUM2.
· NUM1 -lt NUM2 returns true if NUM1 is less than NUM2.
· NUM1 -le NUM2 returns true if NUM1 is less than or equal to NUM2.
예를들면
if [[ $age > 21 ]] # bad, > is a string comparison operator
if [ $age > 21 ] # bad, > is a redirection operator
if [[ $age -gt 21 ]] # okay, but fails if $age is not numeric
if (( $age > 21 )) # best, $ on age is optional
시도:
zero=0;
if [[ $depth -eq $zero ]]; then
echo "false";
exit;
fi
이 형식을 사용하고 '==' '<='와 같은 비교 연산자를 사용할 수도 있습니다.
if (( $total == 0 )); then
echo "No results for ${1}"
return
fi
구체적으로:((depth))
예를 들어, 다음 인쇄물은1
.
declare -i x=0
((x)) && echo $x
x=1
((x)) && echo $x
사용해 볼 수 있습니다.
: ${depth?"Error Message"} ## when your depth variable is not even declared or is unset.
참고: 여기는 그냥?
끝나고depth
.
또는
: ${depth:?"Error Message"} ## when your depth variable is declared but is null like: "depth=".
참고: 여기 있습니다.:?
끝나고depth
.
변수가 다음과 같은 경우 여기서depth
발견됨null
오류 메시지를 인쇄한 다음 종료합니다.
언급URL : https://stackoverflow.com/questions/13086109/check-if-bash-variable-equals-0
'programing' 카테고리의 다른 글
안드로이드 앱을 개발하기에 가장 좋은 IDE는 무엇입니까? (0) | 2023.05.02 |
---|---|
Git 병합 롤백 (0) | 2023.05.02 |
설치된 MS-Office 버전을 검색하는 방법은 무엇입니까? (0) | 2023.04.27 |
Azure PowerShell을 사용하여 기존 Azure 웹 애플리케이션에 앱 설정 추가 (0) | 2023.04.27 |
"Waiting for Debugger" 메시지를 해결하는 방법은 무엇입니까? (0) | 2023.04.27 |