在shell脚本中将输入字符串转换为日期

PUG*_*PUG 6 osx bash parameter shell-script macintosh

我的shell脚本:

#!/bin/bash
echo "$1";
startd=$(date -d "$1" +"%Y%m%d"); 
echo "$startd";
Run Code Online (Sandbox Code Playgroud)

我的命令:

须藤 ./test.sh "20151010"

输出:

20151010 
20150213
Run Code Online (Sandbox Code Playgroud)

它打印今天的日期而不是打印输入日期有什么想法吗?

Bar*_*mar 8

OS X 版本date使用-f选项来解析格式化的日期/时间:

date -j -f '%Y%m%d' "$1" +'%Y%m%d'
Run Code Online (Sandbox Code Playgroud)

-j选项使其仅打印时间,而不是尝试设置系统时钟。所以完整的脚本将是:

#!/bin/bash
echo "$1";
startd=$(date -j -f '%Y%m%d' "$1" +'%Y%m%d'); 
echo "$startd";
Run Code Online (Sandbox Code Playgroud)

这是一个成绩单:

$ ./testdate.sh 20151010
20151010
20151010
Run Code Online (Sandbox Code Playgroud)


mkc*_*mkc 5

如果你想在 OS X 上格式化日期,你可以试试这个:

date -j -f "%Y%m%d" "20151010"
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

Sat Oct 10 17:27:28 CDT 2015
Run Code Online (Sandbox Code Playgroud)