bash
スクリプトで現在の月の名前(janやfebなど)を取得するための構文は何ですか?
date(1)
コマンドを使用できます。
例えば:
date +%b
strftime(3)
マニュアル(_man 3 strftime
_)をシステムにインストールすると、date
ユーティリティで使用できるすべてのフォーマット文字列またはprintf
を使用した%(...)T
フォーマット文字列がリストされます。 date
コマンドのマニュアルには、サポートされているフォーマット文字列も含まれている場合があります。
これらのいずれかを使用するには、たとえば、_%b
_( "ロケールの短縮された月名")または_%B
_( "ロケールの完全な月名")のように、date
に_+
_オプションを使用します。 :
_$ date +%B
December
$ date +%b
Dec
$ date +'%B is abbreviated as "%b"'
December is abbreviated as "Dec"
_
または、printf
を使用(_ksh93
_またはbash
4.3以降):
_$ printf '%(%B)T\n'
December
$ printf '%(%b)T\n'
Dec
$ printf '%(%B is abbreviated as "%b")T\n'
December is abbreviated as "Dec"
_
bash
で小文字の省略された月を取得するには(ロケールで月の小文字の名前が常に提供されない場合):
_$ month=$( date +%b )
$ printf 'It is %s\n' "${month,,}"
It is dec
_
パラメータの拡張_${parameter,,pattern}
_は、pattern
が一致する場合は常に_$parameter
_の大文字と小文字を変更します。 _${m,,}
_では、パターンはどこにでも一致するため、_$m
_の文字列全体が小文字になります。
または、ksh
のように、次のように変数を小文字として事前に宣言します。
_typeset -l month
_
bash
のprintf
では、_-v
_を使用して、生成された文字列をスカラー変数に自動的に挿入できます¹:
_$ printf -v month '%(%b)T'
$ printf 'It is %s\n' "${month,,}"
It is dec
_
¹または配列の要素key _0
_または連想配列変数