【问题标题】:Getting date of X days ago in bash script, using argument variable使用参数变量在bash脚本中获取X天前的日期
【发布时间】:2013-08-06 06:44:39
【问题描述】:

我正在尝试在 bash 脚本中计算动态天数前的日期。

这就是我所做的-

#!/bin/bash
STAMP=`date --date='$1 day ago' +%y%m%d`

但在运行 myscript 2 时,它会显示 -

date: invalid date `$1 day ago'

如何在这个公式中使用我的参数值?

【问题讨论】:

    标签: bash date arguments


    【解决方案1】:

    如果在脚本中将 ' 替换为 " 到此命令中,它会起作用 -

    STAMP=`date --date="$1 day ago" +%y%m%d`
    

    线索是错误响应中使用的两个不同的字符 ` 和 ' -

    date: invalid date `$1 day ago'
    

    bash 脚本专家(不是我)可能会解释为什么会发生这种情况。

    【讨论】:

    • 正如下面@devnull 提到的,单引号防止变量扩展。您始终可以通过添加 echo 来测试“幕后发生的事情”: echo date --date='$1 day ago'
    【解决方案2】:

    这是因为变量替换不会发生在单引号中,即'$1' 不会扩展但"$1" 会。

    这样说

    STAMP=`date --date="$1 day ago" +%y%m%d`
    

    STAMP=$(date --date="$1 day ago" +%y%m%d)
    

    会起作用的。

    【讨论】:

      猜你喜欢
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      • 2012-11-10
      • 1970-01-01
      • 2012-11-12
      • 2015-01-14
      • 1970-01-01
      • 2021-11-04
      相关资源
      最近更新 更多