如何在bash脚本中获取当前月份名称

Hir*_*til 12 bash date

bash脚本中获取当前月份名称(例如 jan 或 feb)的语法是什么?

Big*_*gon 30

您可以使用该date(1)命令。

例如:

date +%b
Run Code Online (Sandbox Code Playgroud)


Kus*_*nda 11

strftime(3)手册(man 3 strftime),如果安装在系统上,会列出所有格式字符串可以与使用date实用程序或%(...)T与格式字符串printfdate命令的手册也可能包含支持的格式字符串。

要使用其中之一,例如%b(“语言环境的月份缩写名称。”)或%B(“语言环境的完整月份名称”),您可以使用以下+选项date

$ date +%B
December

$ date +%b
Dec

$ date +'%B is abbreviated as "%b"'
December is abbreviated as "Dec"
Run Code Online (Sandbox Code Playgroud)

或者,使用printf(在ksh93bash4.3+ 中):

$ printf '%(%B)T\n'
December

$ printf '%(%b)T\n'
Dec

$ printf '%(%B is abbreviated as "%b")T\n'
December is abbreviated as "Dec"
Run Code Online (Sandbox Code Playgroud)

要获得小写的缩写月份bash(如果您的语言环境并不总是提供小写的月份名称):

$ month=$( date +%b )
$ printf 'It is %s\n' "${month,,}"
It is dec
Run Code Online (Sandbox Code Playgroud)

参数扩展${parameter,,pattern}将修改$parameterwherepattern匹配的情况。在 中${m,,},模式在任何地方都匹配,因此整个字符串$m是小写的。

或者像 in 一样ksh,预先将变量声明为小写:

typeset -l month
Run Code Online (Sandbox Code Playgroud)

使用bash's printf,您可以使用-v以下方法将生成的字符串自动插入到标量变量¹中:

$ printf -v month '%(%b)T'
$ printf 'It is %s\n' "${month,,}"
It is dec
Run Code Online (Sandbox Code Playgroud)

¹ 或数组或关联数组变量的 的元素0