シェルスクリプトで次の日付形式を確認したい
2015-Jul-13
使用していますが、date -d "2015-Jul-13" +"%Y-%b-%d"
次のようにエラーが発生します。
date: invalid date '2015-Jul-13'
ベストアンサー1
GNUはこれをdate
サポートしていませんYYYY-MMM-DD
。したがって、実際にこの形式で日付を処理する必要がある場合は、パラメータを目的の形式DD-MMM-YYYY
に置き換える次の方法を使用して処理できます。date
ymd='2015-Jul-13'
dmy=$(echo "$ymd" | awk -F- '{ OFS=FS; print $3,$2,$1 }')
if date --date "$dmy" >/dev/null 2>&1
then
echo OK
fi
これは完全なシェルソリューションです。これを分解すると、IFS=-
ディレクティブはシェルに空白ではなく-
ハイフンを使用して、次のコマンドラインを区別するように指示します。コマンドラインのように変数を解析しますが、今はハイフンで区切り、set $ymd
パラメータに値を割り当て、$ymd
$1
$2
待つ。キャプチャされた3つの値を逆順echo "$3-$2-$1"
に出力するだけです。
ymd='2015-Jul-13'
dmy=$(IFS=-; set $ymd; echo "$3-$2-$1")
if date --date "$dmy" >/dev/null 2>&1
then
echo OK
fi