web-dev-qa-db-fra.com

Comment obtenir le nom du mois en cours dans le script bash

Quelle est la syntaxe pour obtenir le nom du mois en cours (par exemple jan ou feb) dans un script bash?

9
Hiraman Patil

Vous pouvez utiliser la commande date(1).

Par exemple:

date +%b
22
Bigon

Le manuel strftime(3) (man 3 strftime), S'il est installé sur votre système, répertorie toutes les chaînes de formatage qui peuvent être utilisées avec l'utilitaire date ou %(...)T formatez les chaînes avec printf. Le manuel de la commande date peut également contenir les chaînes de formatage prises en charge.

Pour utiliser l'un d'eux, par exemple %b ("Le nom de mois abrégé de la locale.") Ou %B ("Le nom de mois complet de la locale"), vous utilisez le + option pour date:

$ date +%B
December

$ date +%b
Dec

$ date +'%B is abbreviated as "%b"'
December is abbreviated as "Dec"

Ou, avec printf (dans ksh93 Ou 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"

Pour obtenir un mois abrégé en minuscules dans bash (si vos paramètres régionaux ne fournissent pas toujours des noms de mois en minuscules):

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

L'extension du paramètre ${parameter,,pattern} Modifiera la casse de $parameter Partout où pattern correspond. Dans ${m,,}, Le motif correspond partout, donc toute la chaîne dans $m Est en minuscules.

Ou comme dans ksh, déclarez au préalable la variable en minuscule avec:

typeset -l month

Avec bash de printf, vous pouvez automatiquement insérer la chaîne générée dans une variable scalaire¹ en utilisant -v:

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

¹ ou l'élément clé0 D'un tableau ou d'une variable de tableau associatif

10
Kusalananda