3번하자
time1=11:34:45
time2:12:39:32
target_time:12:45:48
그렇다면 목표 시간이 time1 또는 time2보다 크거나 같은지 어떻게 알 수 있을까요?
원하는 출력:
the target time 12:45:48 is greater or equal to 12:39:32
답변1
먼저 시간을 비교하기 쉬운 일반 형식(예: 초)으로 변환할 수 있습니다.
이는 다음과 같은 bash 함수에서 수행할 수 있습니다.
time_to_seconds() {
IFS=: read -r hours minutes seconds <<< "$1"
echo $(( hours * 3600 + minutes * 60 + seconds ))
}
IFS=:
시, 분, 초를 읽는 데 사용할 수 있도록 문자열을 콜론으로 구분하도록 bash에 지시합니다 read
.
그런 다음 다음과 같이 시간 변수를 초로 변환할 수 있습니다.
time1_secs=$(time_to_seconds "$time1")
time2_secs=$(time_to_seconds "$time2")
target_time_secs=$(time_to_seconds "$target_time")
뭐, 그냥 하기만 하면 되는 문제야비교하다, 이와 같이:
if [ $target_time_secs -ge $time2_secs ]; then
echo "the target time $target_time is greater or equal to $time2"
fi