Как мне создать функцию, которая принимает имя с целочисленным суффиксом в качестве аргумента и увеличивает этот суффикс?

PHP действительно упрощает синтаксический анализ дат с текстовым вводом, если он доступен в вашей системе.

Пример:

bash-[522]$ php -qr 'date_default_timezone_set("UTC"); echo date("d-m-Y\n", strtotime("first monday of next month"));'
03-04-2017

У меня есть эта функция в моем .bashrc:

get_date ()
{
    text="$*";
    php -qr "date_default_timezone_set(\"UTC\"); echo date(\"d-m-Y\n\", strtotime(\"$text\"));"
}

Которая я могу использовать как:

bash-[523]$ get_date first monday of next month
03-04-2017

Редактировать Добавление опции для использования cal

Почти каждая система, имеющая bash будет иметь cal . Календарная программа. Вы можете получить список даты для первого дня каждого дня недели, запустив комбинацию cal , date и awk следующим образом:

 cal -hN $(date -d 'next month' +%b' '%Y) | grep -v $(date -d 'next month' +%b) | awk -v date=$(date -d 'next month' +%Y-%m-) '{ printf "%s: "date"%02i\n", $1, $2; }'

Это даст вам следующий результат:

Su: 2017-04-02
Mo: 2017-04-03
Tu: 2017-04-04
We: 2017-04-05
Th: 2017-04-06
Fr: 2017-04-07
Sa: 2017-04-01

Измените $ 2 на $ NF в инструкции awk, чтобы получить дату последнего появления каждого дня месяца.

1
15.09.2017, 02:23
1 ответ

Эта функция принимает один параметр; он разделяет строку и число на основе символа подчеркивания, а затем выводит строку плюс увеличенное число:

function increment() { 
  local num=${1#*_}; 
  local str=${1%_*}; 
  printf "%s" "${str}_$((num+1))";
}

$ echo $(increment Brad_1)
Brad_2
$ echo $(increment Jeff_41)
Jeff_42
1
27.01.2020, 23:44

Теги

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