다음과 같은 명령문에서 정수와 문자열 비교를 수행하려고 합니다.
$ TimeHr=$(date +%_H)
$ Time=Night
$ echo TimeHr
1
$ if ((TimeHr>18 || TimeHr<5 )) && [ Time == "Night" ]; then echo "Night Time"; else echo "Day Time"; fi
Day Time
$ if ((TimeHr>18 || TimeHr<5 )) && [[ Time == "Night" ]]; then echo "Night Time"; else echo "Day Time"; fi
Day Time
그러나 분기가 올바른 경우 인쇄되지 않습니다. 어떻게 수정해야 하나요?
편집하다:
((
코드가 이해하기 쉬워 보이기 때문에 숫자 비교를 선호합니다 .
답변1
두 가지 조건을 하나로 결합하겠습니다.
if [[ ( $TimeHr -gt 18 || $TimeHr -lt 5 ) && $Time == "Night" ]]; then echo "Night Time"; else echo "Day Time"; fi
Night Time
[
그러나 원래 테스트에는 와 [[
테스트 $variable
대신에 간단한 오류가 있습니다 variable
.
그래서
if ((TimeHr>18 || TimeHr<5 )) && [[ $Time == "Night" ]]; then echo "Night Time"; else echo "Day Time"; fi