쉘 스크립트에서 시간을 비교하는 방법은 무엇입니까?

쉘 스크립트에서 시간을 비교하는 방법은 무엇입니까?

두 개의 시간 변수가 있습니다. 쉘 스크립트의 if 문에서 비교하고 싶습니다.

예를 들어 time1=HH:MM:SStime2=HH:MM:SS.

형식은 입니다 HH:MM:SS.

if [it matched]
then
    echo "matched" 
else
    echo "not matched"
fi

답변1

두 변수(내용)를 특정 HH:MM:SS 문자열과 비교하려면 간단히 해당 문자열과 비교하고 논리적 "and"( &&)를 사용하여 테스트를 함께 연결하면 됩니다.

if [ "$time1" = "01:23:45" ] && [ "$time2" = "01:42:42" ]
then
  echo matched
else
  echo not matched
fi

case또 다른 옵션은 특정 HH:MM:SS를 일치시키지 않으려는 경우 타이밍 일치에 어느 정도 유연성을 허용하는 ;를 사용하는 것입니다 . 먼저, 암시적 "and"를 사용하여 두 번을 연결해 보겠습니다.

time1=01:23:45
time2=01:42:42
case "$time1,$time2" in
  (01:23:45,01:42:42) echo yes;;
esac

스크립트 독자가 무슨 일이 일어나고 있는지 이해할 수 있도록 여기에 쉼표를 삽입했습니다.

SS이제 time2 부분 에 대해 별로 신경 쓰지 않는다고 가정합니다 .

case "$time1,$time2" in
  (01:23:45,01:42:*) echo yes;;
esac

또는 time2의 초가 특정 범위 내에 있기를 원할 수도 있습니다.

case "$time1,$time2" in
  (01:23:45,01:42:4[1-3]) echo yes;;
esac

거기에서 예제를 확장할 수 있습니다.

답변2

형식이 동일하면 다른 문자열과 비교하면 됩니다.

$ [ "$time1" = "$time2" ] && echo "match" || echo "no match"

관련 정보