我希望从用户输入中读取日期字符串,并将其转换为bash脚本中的一致格式。我在使用国际语言环境时遇到困难,因为date命令默认为美国日期格式(mm / dd / yyyy)而我在英国,所以我的用户更有可能使用dd-mm-yyyy。但是,我不希望限制他们的输入法,所以如果用户输入yyyy-mm-dd,dd-mmm-yyyy等,我仍然希望使用他们的输入并正确解释它们。
到目前为止,我发现这个语法很接近:
date "+%Y-%m-%d" -d %DATETOCHECK
样本输入 - >输出:
31-Dec-2017 --> 2017-12-31 [OK]
2017-12-31 --> 2017-12-31 [OK]
31/12/2017 --> Fails with return code 1
如果可能的话,我想使用date命令,因为这已经具有极大的灵活性。
问题:如何才能使它始终假定dd / mm / yyyy永远不会是mm / dd / yyyy?
(我已尝试在我的脚本开头添加'export LC_ALL = en_GB',但这没有任何区别。也许我没有应用此权限,或者Locale没有设置我的预期)
使用Suse Linux Enterprise Desktop 10,
Linux DCTL7132-13 2.6.16.21-0.8-smp #1 SMP Mon Jul 3 18:25:39 UTC 2006 i686 i686 i386 GNU/Linux
更新:这已被标记为另一个问题的副本。我同意我提出同样的问题,但我无法在对该问题的答复中找到合适的答案(linux bash - Parse date in custom format)。
此外,在该文章中,常见的语法是:
NOW=$(date +%c); echo $NOW
当我运行此操作时,我会得到“非法变量名称”的响应。 (啊,那是因为我的shell是tcsh;当我将它改为bash时,命令可以从命令行运行)
此致 佰