두 개의 타임스탬프를 비교하고 x가 y보다 큰 경우 몇 가지 작업을 수행하려고 합니다. Linux 시스템에서 bash를 사용하여 시도했지만 "잘못된 날짜" 오류가 발생했습니다. 이것은 내 코드입니다.
#!/bin/bash
x='2020.01.23 14:41:18.554'
y='2020.01.23 17:17:02.323'
if [[ $(date -d "$x") -gt $(date -d "$y") ]]
then
echo -e "first value is greater than second"
#### Perform some actions
#### Perform some actions
else
echo "second value is greater, so do nothing"
fi
exit
스크립트를 실행하면 다음 오류가 발생합니다.
date: invalid date `2020.01.23 14:41:18.554'
date: invalid date `2020.01.23 17:17:02.323'
전체 값을 에포크 시간으로 변환해서 비교해 보았는데, 에포크 시간에는 밀리초가 카운트되지 않습니다. 밀리초를 포함하여 이 비교를 올바르게 수행하려면 어떻게 해야 합니까? 감사해요.
답변1
귀하의 예에는 두 가지 문제가 있습니다.
.
먼저 달력 날짜에서 /
또는 를 바꿔야 합니다 -
. 이렇게 하면 잘못된 날짜 오류가 제거됩니다.
+%s%N
그런 다음 명령 에 추가해야 합니다 date
. 이는 날짜를 나노초 단위의 신기원 시간으로 변환합니다.
아래 코드는 나에게 잘 작동합니다.
x='2020/01/23 14:41:18.554'
y='2020/01/23 17:17:02.323'
if [[ $(date -d "$x" +%s%N) -gt $(date -d "$y" +%s%N) ]]
then
echo -e "first value is greater than second"
#### Perform some actions
#### Perform some actions
else
echo "second value is greater, so do nothing"
fi
exit
편집 : 참조https://stackoverflow.com/questions/16548528/command-to-get-time-in-milliseconds나노초와의 호환성을 위해
답변2
모든 타임스탬프가 예시에 사용된 형식인가요? 그렇다면 문자열로 비교할 수 있습니다.