如何使用bash中的日期动态更改前几天

时间:2014-12-04 23:51:08

标签: linux bash

我试图编写一个脚本来检查特定时间窗口中的请求发生情况。我的方法包括一个变量$daysAgo,它会在每次出现循环时递减。我不明白的原因是为什么剧本下面给我的是昨天的日期作为输出,而不是2周前。有任何想法吗?

#! /bin/bash
daysAgo=14
pastDate=$(date --date="($daysAgo) days ago" +%d/%b/%Y)

2 个答案:

答案 0 :(得分:1)

我删除括号后就行了

#! /bin/bash
daysAgo=14
pastDate=$(date --date="$daysAgo days ago" +%d/%b/%Y)

答案 1 :(得分:1)

已修改的答案*

包含变量

  

" $ DAYSAGO"

带括号的

将导致bash将其解释为子shell函数(具有自己的局部变量的函数)。在这种情况下的任何全局变量" $ daysAgo"将不会被替换为子shell函数。函数的思想就像一个单独的脚本,代码和它自己的变量。根据建议删除括号会将变量解释为全局变量