web-dev-qa-db-ja.com

シェルスクリプトで入力文字列を日付に変換する

私のシェルスクリプト:

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

私のコマンド:

Sudo ./test.sh "20151010"

出力:

20151010 
20150213

入力日を印刷する代わりに今日の日付を印刷しましたか?

5
PUG

OS Xバージョンのdateは、-fオプションを使用して、フォーマットされた日付/時刻を解析します。

date -j -f '%Y%m%d' "$1" +'%Y%m%d'

-jオプションを使用すると、システムクロックを設定するのではなく、単に時刻を出力します。したがって、完全なスクリプトは次のようになります。

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

ここにトランスクリプトがあります:

$ ./testdate.sh 20151010
20151010
20151010
7
Barmar

OS Xで日付をフォーマットしようとしている場合は、これを試すことができます:

date -j -f "%Y%m%d" "20151010"

次の出力が表示されます。

Sat Oct 10 17:27:28 CDT 2015
4
mkc