【问题标题】:How can we manipulate date in AIX machine using bash script?我们如何使用 bash 脚本在 AIX 机器中操作日期?
【发布时间】:2014-12-03 00:20:40
【问题描述】:

我的脚本有一个命令: 日期 -d -30 天。 该脚本在 Linux 机器上运行时按预期运行。 但是,在 AIX 机器上运行时,会出现错误“非法选项 --d”。 因此,无论运行脚本的底层操作系统如何,都应该编写通用的代码/命令。 我基本上需要从当前日期减去 30 天并使用操纵日期。

【问题讨论】:

  • 嗯,不熟悉perl,由于环境限制需要使用bash脚本:(
  • 除了可能重复的this answer 看起来它可能有用。
  • 我认为您不会找到一个“通用的命令,无论底层操作系统如何”。如果您可以稍微缩小范围(即仅 AIX 和 Solaris 和 Linux,而不是 Windows、DOS、Mac、Multics、Plan 9 ......),您可能会有更好的运气......

标签: bash aix


【解决方案1】:

“bash 脚本”表示您调用非内置实用程序,例如 date 和是的 perl

由于 AIX 上的 date 命令无法执行您希望它执行的操作,因此您需要对替代方案持开放态度

past_date=$(
  perl -MTime::Local -MPOSIX=strftime -le '
    $now = timelocal(0,0,12,(localtime)[3,4,5]); 
    $ago = $now - 30 * 86400; 
    print strftime("%Y-%m-%d %T %Z",localtime($ago))
  '
)

调整您的 strftime 格式以满足您的需要。

我假设您的 perl 发行版不是最新的。我会这样做:

perl -MDateTime -E 'say DateTime->now->set_time_zone("local")->add(days=>-30)->strftime("%F %T %Z")'

【讨论】:

    猜你喜欢
    • 2012-02-22
    • 2019-11-06
    • 2014-02-22
    • 2010-09-30
    • 1970-01-01
    • 2013-04-27
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多