如何在 bash 中比较这些(日期)值

Mic*_*and 1 bash comparison

我需要比较以下格式的 2 个字符串:

2013-12-31T00:00:00
2014-11-19T15:40:30
Run Code Online (Sandbox Code Playgroud)

它是一种自定义日期时间格式。我尝试了不同的事情,没有奏效:

if [ ${val1} < ${val2} ] || [ ${val1} == ${val2} ]; then ...
Run Code Online (Sandbox Code Playgroud)

或者

if [ ${val1} <= ${val2} ]
Run Code Online (Sandbox Code Playgroud)

或者

if [[ ${val1} -el ${val2} ]]
Run Code Online (Sandbox Code Playgroud)

谢谢你们!

l0b*_*0b0 5

Bash 有自己的测试语法,您可以在其中使用><

$ val1=2013-12-31T00:00:00
$ val2=2014-11-19T15:40:30
$ [[ $val1 > $val2 ]]
$ echo $?
1
$ [[ $val1 < $val2 ]]
$ echo $?
0
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用Unix 时间戳并比较整数值

$ val1=$(date --date='2013-12-31T00:00:00' +%s)
$ val2=$(date --date='2014-11-19T15:40:30' +%s)
$ [ $val1 -gt $val2 ]
$ echo $?
1
$ [ $val1 -lt $val2 ]
$ echo $?
0
Run Code Online (Sandbox Code Playgroud)