我有两个变量Date1=2023-10-08和Date2=2023-10-09 我想以天计算两者之间的差额,我try 如下:

 DIFF=$(( ($date2 - $date1) / (60 * 60 * 24) ))
if [ $DIFF -eq 1 ]
    then
        echo "one day ago.."
    else
        echo "many dayzz"
fi

我正在了解以下错误:-

(2023-10-09:BASE的值太大(错误标记为"09")

推荐答案

BASH算法无法处理此格式中的数据.必须使用诸如date之类的工具将日期转换为整数.使用GNUdate‘S %s,可以用以下公式计算差额

$(( ($(date -d "$date2" "+%s") - $(date -d "$date1" "+%s")) / 86400 ))

Linux相关问答推荐

Arch_prctl的用例是什么

变量在vim中打印良好,但在bashshell中打印不好,这怎么可能发生?

条件句if的正确写法是怎样的?

为什么 liburing 写入性能低于预期?

如何更改文件的上次访问/修改/更改日期?

如何在vim中使用正则表达式来切换文件中所有字符的大小写

编译过度对齐的动态分配变量时出现 icpc 错误

在 puppet 中管理 linux 的用户密码

argv的编码是什么?

具体来说,fork() 如何处理 Linux 中 malloc() 动态分配的内存?

判断条件是否为假

为什么这个命令会杀死我的 shell?

让 sudo 和 nohup 一起工作

bash 脚本中的自动 docker 登录

如果关键字触发然后执行命令,Shell 脚本来监视日志(log)文件?

在 Emacs 中匹配括号的命令是什么?

grep 递归查找 Linux 上的特定文件类型

使用 Bash 查找和复制文件

如何使用 sed 通过灵活的键和值更改我的配置文件?

如何计算一个单词在目录的所有文件中出现的次数?