对具有日期的变量进行操作会产生错误

问题描述

如何从变量减去30分钟?

#!/bin/bash

date_30=$(date --date '-30 min')
date_60=$($date_30 --date '-30 min')
    
exit 0

但我知道

./a.sh: 4: ./a.sh: Thu: not found

解决方法

date_30=$(date --date '-30 min')

这会将date --date '-30 min'的输出存储到date_30变量中,该变量类似于:Thu Aug 13 13:09:04 CEST 2020

date_60=$($date_30 --date '-30 min')

执行$date_30变量的内容并进行空格分隔(因为它没有用双引号引起来的"),因此它尝试使用参数{{1 }},ThuAug1313:09:04CEST2020,肯定没有名为--date的命令这肯定不是您尝试做的。

要修复它:

-30 min

或使用带有时间戳记日期的Shell算术:

Aug