Как получить название текущего месяца в сценарии bash

У меня была та же проблема, я решил ее следующим образом:

На ssh-сервере я раскомментировал, и введите в yes следующие значения в / etc / ssh / sshd_config

 RSAAuthentication yes
 PubkeyAuthentication yes

И затем:

sudo service sshd restart
7
31.01.2017, 10:12
2 ответа

Вы можете использовать команду date (1) .

Например:

date +%b
32
27.01.2020, 20:13

Руководство strftime (3) ( man 3 strftime ), если оно установлено в вашей системе, перечислите все строки форматирования, которые могут использоваться с утилитой date или строками формата % (...) T с помощью printf . Руководство по команде date также может содержать поддерживаемые строки форматирования.

Чтобы использовать один из них, например % b («сокращенное название месяца в локали») или % B («полное название месяца в локали»), вы используете параметр + для даты :

$ 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

Расширение параметра $ {параметр ,, шаблон } изменит регистр $ параметр везде, где совпадает шаблон . В $ {m ,,} шаблон соответствует везде, поэтому вся строка в $ m отображается в нижнем регистре.

Или, как в ksh , заранее объявите переменную в нижнем регистре с помощью:

typeset -l month

С помощью bash printf вы можете автоматически вставить сгенерированный строка в скалярной переменной с использованием -v :

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

¹ или элемента ключа 0 массива или переменной ассоциативного массива

11
27.01.2020, 20:13

Теги

Похожие вопросы