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

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

私のシェルスクリプト:

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

私のコマンド:

sudo ./test.sh "20151010"

出力:

20151010 
20150213

入力した日付ではなく、今日の日付が出力されることをご存知ですか?

答え1

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

答え2

OS Xで日付形式を指定する場合は、次のことを試すことができます。

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

次の結果が表示されます。

Sat Oct 10 17:27:28 CDT 2015

関連情報