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 ]
배시 식에 변수의 값을 대입 한 후. 여기서 문제는
-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
Specifically: ((depth))
. By example, the following prints 1
.
declare -i x=0
((x)) && echo $x
x=1
((x)) && echo $x
You can try this:
: ${depth?"Error Message"} ## when your depth variable is not even declared or is unset.
NOTE: Here it's just ?
after depth
.
or
: ${depth:?"Error Message"} ## when your depth variable is declared but is null like: "depth=".
NOTE: Here it's :?
after depth
.
Here if the variable depth
is found null
it will print the error message and then exit.
참고URL : https://stackoverflow.com/questions/13086109/check-if-bash-variable-equals-0
'Programming' 카테고리의 다른 글
각 데이터 행에 대해 하나의 INSERT 문을 MySQLDump (0) | 2020.06.03 |
---|---|
numpy 행렬 벡터 곱셈 (0) | 2020.06.03 |
stdout으로 인쇄하는 것이 왜 그렇게 느립니까? (0) | 2020.06.03 |
힘내 : 추적 된 파일 무시 (0) | 2020.06.03 |
IE가 응용 프로그램 / json을 다운로드하지 않고 단순히 표시하도록 어떻게 확신 할 수 있습니까? (0) | 2020.06.03 |