Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较shell脚本中的两个日期_Shell_Date_Variables - Fatal编程技术网

比较shell脚本中的两个日期

比较shell脚本中的两个日期,shell,date,variables,Shell,Date,Variables,我需要比较存储在两个变量中的两个日期,格式为YYYY-MM-DD。我想我可以将它们存储在另一个变量中,并使用一些tr-d-,然后像整数一样比较,但我不知道如何比较。提前谢谢 您可以使用date+%s-d your_date来获取自固定实例1970-01-01,00:00 UTC(称为epoch)以来的秒数。一旦你明白了这一点,你就很容易对约会做任何事情。还有几个选项可以将数字转换回日期。您可以使用date+%s-d your_date来获取自固定实例1970-01-01,00:00 UTC(称为

我需要比较存储在两个变量中的两个日期,格式为YYYY-MM-DD。我想我可以将它们存储在另一个变量中,并使用一些tr-d-,然后像整数一样比较,但我不知道如何比较。提前谢谢

您可以使用date+%s-d your_date来获取自固定实例1970-01-01,00:00 UTC(称为epoch)以来的秒数。一旦你明白了这一点,你就很容易对约会做任何事情。还有几个选项可以将数字转换回日期。

您可以使用date+%s-d your_date来获取自固定实例1970-01-01,00:00 UTC(称为历元)以来的秒数。一旦你明白了这一点,你就很容易对约会做任何事情。还有几个选项可以将数字转换回最新状态。

您可能需要呼叫expr,具体取决于您的神秘外壳:

d1="2015-03-31" d2="2015-04-01"
if [ "$d1" = "$d2" ]; then
    echo "same day"
elif expr "$d1" "<" "$d2" >/dev/null; then
    echo "d1 is earlier than d2"
else
    echo "d1 is later than d2"
fi
test命令或其别名[仅实现字符串相等和不相等运算符。当您为非bash shell提供此命令时:

[ "$d1" > "$d2" ]
>$d2部分被视为标准输出重定向。在本例中,将创建一个名为2015-04-01的零长度文件,条件命令变为

[ "$d1" ]
由于变量为非空,因此计算结果为成功状态


文件大小为零,因为[命令不生成标准输出。

您可能需要调用expr,具体取决于您的神秘外壳:

d1="2015-03-31" d2="2015-04-01"
if [ "$d1" = "$d2" ]; then
    echo "same day"
elif expr "$d1" "<" "$d2" >/dev/null; then
    echo "d1 is earlier than d2"
else
    echo "d1 is later than d2"
fi
test命令或其别名[仅实现字符串相等和不相等运算符。当您为非bash shell提供此命令时:

[ "$d1" > "$d2" ]
>$d2部分被视为标准输出重定向。在本例中,将创建一个名为2015-04-01的零长度文件,条件命令变为

[ "$d1" ]
由于变量为非空,因此计算结果为成功状态


文件大小为零,因为[command]不生成标准输出。

为什么不执行字符串操作?我尝试了[var1>var2],但每次都变为真为什么不执行字符串操作?我尝试了[var1>var2],但每次都变为真