2つのタイムスタンプを比較し、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
あなたの例には2つの問題があります。
.
まず、カレンダーの日付から/
またはを変更する必要があります-
。これにより、誤った日付エラーが削除されます。
+%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ナノ秒との互換性のために