【问题标题】:Accept date as user input in bash script接受日期作为 bash 脚本中的用户输入
【发布时间】:2015-06-01 17:19:14
【问题描述】:

我想接受 dd-mm-yyyy 格式的日期作为用户输入(通过读取),然后将其转换为 shell 脚本中的日期对象。我怎样才能做到这一点。 我在yyyy-mm-dd 上取得了成功,但不知何故,它不适用于我的用例。

这是我的脚本:-

#!/bin/bash
read -p "Enter a date (dd-mm-yyyy): " user_date
if date=$(date -d "$user_date" +'+%d-%m-%Y'); then 
  # user date was ok
  echo $date

这是我的输入:-

./2.sh
Enter a date (dd-mm-yyyy): 11-1-2011

错误:

date: invalid date `11-1-2011'

谢谢

【问题讨论】:

  • 为什么会出错?
  • 这是bash 脚​​本,而不是python
  • @ZdaR。我用错误消息更新了我的问题
  • @sirfz 是的,先生。我的问题主题中已经提到了这一点。抱歉在python下错误地标记它
  • AFAICS,您无法指定输入格式的外观。我有一个程序strptime,它基本上是函数strptime() 解析日期字符串的封面。例如:strptime -T '%d-%m-%Y' 11-1-2011 产生1294732800 = 11-1-2011,然后使用date,我可以得到:date -d @1294732800 产生Tue Jan 11 00:00:00 PST 2011,这是正确的时区(美国/太平洋,又名美国/洛杉矶)。

标签: linux bash shell unix unix-timestamp


【解决方案1】:

要比较两个字符串(没有日期对象,只有date 命令的字符串输出),您需要使用[,或者最好使用条件语句[[ ... ]]

if [[ $user_date = $(date -d "$user_date" +'+%d-%m-%Y') ]]; then 

当然,不能保证date 可以将用户输入的字符串解析为日期。

【讨论】:

    猜你喜欢
    • 2022-12-02
    • 2012-12-02
    • 2023-03-23
    • 2012-11-25
    • 2014-07-21
    • 2021-12-28
    • 2013-10-10
    • 2016-11-18
    • 1970-01-01
    相关资源
    最近更新 更多