noc*_*rne 3 variables shell date
我需要比较存储在两个变量中的两个日期,格式为YYYY-MM-DD. 我想我可以将它们存储在另一个变量中并使用一些tr -d "-",然后像整数一样进行比较,但我不知道如何。提前致谢 !
小智 7
您可以使用它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
Run Code Online (Sandbox Code Playgroud)
d1 is earlier than d2
Run Code Online (Sandbox Code Playgroud)
该test命令(或其别名[)仅实现字符串相等和不等运算符。当你给(非 bash)shell 这个命令时:
[ "$d1" > "$d2" ]
Run Code Online (Sandbox Code Playgroud)
该> "$d2"部分被视为标准输出重定向。创建了一个名为(在本例中)“2015-04-01”的零长度文件,条件命令变为
[ "$d1" ]
Run Code Online (Sandbox Code Playgroud)
并且由于变量非空,因此评估为成功状态。
该文件大小为零,因为该[命令不生成标准输出。