【问题标题】:Shell Date conversion and assign to Variable壳牌日期转换并分配给变量
【发布时间】:2021-09-20 04:41:41
【问题描述】:

我有要求将字符串日期转换为以下格式并分配给变量以进行进一步处理。

    Input is string as below
    str = 20210709
    Need to get yesterday date and change the format to %Y-%m-%d
    (date -d 'str -1 days' +'%Y-%m-%d')
    and i am expecting output in a variable like below
    dt = 2021-06-09

    I tried like below
    dt =  date -d '20210709 -1 days' +'%Y-%m-%d'
    and the error as below
    -bash: d: command not found

任何想法/建议将不胜感激。

【问题讨论】:

    标签: bash shell sh ksh


    【解决方案1】:

    你错过了几件事:

    str=20210709
    dt=$(date -d "$str - 1 day" '+%F')
    echo "$dt"
    
    2021-07-08
    

    【讨论】:

      【解决方案2】:
      dt=$(paste -d "-" <(echo $str |cut -c1-4) <(echo $str |cut -c5-6) <(echo $str |cut -c7-8))
      

      如果你的 linux 版本不喜欢这种语法,那么

      dt=$(sed 's/\(....\)\(..\)\(..\)/\1-\2-\3/' <<< $str)
      

      【讨论】:

      • 不工作。 test.sh:命令替换:第 4 行:意外标记附近的语法错误 (' test.sh: command substitution: line 4: paste -d "-"
      • 一定是linux的区别之一。这也将起作用: dt=$(sed 's/(....)(..)(..)/\1-\2-\3/'
      • 这也不起作用 sed: -e expression #1, char 26: invalid reference \3 on `s' command's RHS
      • 您使用的是什么操作系统,您确定您的安装没有损坏吗?这些命令是合法的。您使用 sed 得到的错误是说 \3 不是有效的参考。由于有三个捕获组,我看不出这怎么可能。
      • 昨天计算怎么样?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-03
      • 2021-09-19
      • 1970-01-01
      • 2013-09-19
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      相关资源
      最近更新 更多