Bash 조건부 문자열과 정수를 함께 사용

Bash 조건부 문자열과 정수를 함께 사용

다음과 같은 명령문에서 정수와 문자열 비교를 수행하려고 합니다.

$ 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

관련 정보