【问题标题】:Using date command with multiple variables使用带有多个变量的日期命令
【发布时间】:2016-06-25 02:53:08
【问题描述】:

我有三个变量 $year $month 和 $day。他们每个人都收集来自用户的输入,例如: 我的一天 20160303 或者 我的一天 2016 03 03 在这个例子中,我以不同的方式使用多个“if”语句来保存年份变量下的第一个 yyyy,相应地保存月份和日期下的 mm。 我需要使用它们来找出星期几。我此刻拥有的是

nn=`date --date="$1" +"%A"`

echo "$nn"

它适用于像 20160404 这样的输入,但如果用户键入 3 个参数,我如何在日期命令中正确使用所有三个变量来显示星期几?

【问题讨论】:

    标签: bash date variables


    【解决方案1】:

    这应该适用于 linux 日期版本(GNU coreutils),不确定 Mac OS X。date.bash 看起来像这样:

    #!/bin/bash
    date -d "$1$2$3" +%Y-%m-%d
    

    分配exe权限:

    chmod u+x date.bash
    

    执行:

    ]# ./date.bash 2016 06 24
    2016-06-24
    
    ]# ./date.bash 20160624
    2016-06-24
    
    ]#./date.bash 2016 0624
    2016-06-24
    

    对于 Mac OS X,您可以在 date.bash 中使用以下语法

    #!/bin/bash
    date -j -f "%Y%m%d" "$1$2$3" +%Y-%m-%d
    

    在上述所有示例中,我都使用+%Y-%m-%d 作为格式。您可以将其替换为 +%A 以获取当天的名称。

    注意:对于 Mac OS,./date.bash 2016-06-24 将不起作用,而在 Linux 中则可以。

    【讨论】:

    • 这有一个额外的好处,如果没有参数,它会打印now :)
    【解决方案2】:

    如果你想将三个参数合二为一,很简单:

    "$1$2$3"
    

    这会将2016 03 03 变成20160303

    【讨论】:

    • 我想把它们放在括号里,但没想到那么容易,谢谢
    猜你喜欢
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多