TGViewer
Bash Days | Linux | DevOps Bash Days | Linux | DevOps @bashdays · 23.6K subscribers
Post #528 12K
Последние новости — В Москве госпитализировали мужика, который не смог настроить GoodbyeDPI и похавал без ютуба.

А ты настроил? 😲

Вот так вот и живем, а сегодня Tagd Tagd снова в тренде 👇

—

Сегодня (01.08.2024) запускаю скрипт архивирования и получаю сообщение об ошибке:

bash: declare: 08: слишком большое значение для основания (неверный маркер «08»)


Скрипт, написанный и работающий с 02.02.24г вдруг перестал работать.

Чудеса?
ㅤ
Лезу, смотрю, где ошибка.

declare -i MON=$(date +%m)


Мне нужен просто номер месяца для контроля, какой накопитель должен быть примонтирован.

Начинаю выяснять. Оказывается, числа, начинающиеся с "0", а bash считает восьмеричными. Понятное дело, 08 для восьмеричной системы великовато.

Ну, решений проблемы море.

0. Самый правильный вариант (подсказал Alexey Kuznetsov)

declare -i MON=$(date "+%-m")


1. Классический вариант

declare -i MON=$((10#$(date "+%m")))


10# - система счисления. Роман об этом уже писал. Но, читаемость (понимаемость) строки - так себе.

2. Более читаемый

declare -i MON=$(date "+%m"|sed 's/^0//')


Просто уберем ведущий "0" и проблема решена.

3. Решение на awk.

Пробую пробую на своей машине:

declare -i MON=$(awk 'BEGIN{m=+strftime("%m");print m}')


Работает. Встраиваю в скрипт - ошибка

awk: line 2: function strftime never defined


Поверяю версии awk. У меня на машине gawk, на серваке mawk.

Блин, это уже вызов. mawk - не gawk и у него отсутствуют функции времени и даты (ну, по крайней мере в той версии).

Но, решение есть.

declare -i MON=$(date "+%m"|awk '{print $1+=0}')


Странная инструкция $1+=0 позволяет преобразовать строковое представление числа в первой колонке в числовое.

Ну, собственно все. В коментах надеюсь увидеть другие варианты решения проблемы.

tags: #linux
—
🔔 @bashdays
More from @bashdays
  1. Sep 29, 2026Самый жаркий холивар в команде — это не systemd, а какие заказать роллы на всю команду. Од…
  2. Sep 24, 2026Post #1565
  3. Sep 23, 2026Здрасти приехали, решил я в кой-то веке воспользоваться услугами Codex, создал аккаунт, по…
  4. Sep 22, 2026Всем привет, с вами TagdTagd. Сегодня опять поднимем тему архивов, но немного с другой сто…
  5. Sep 15, 2026Всем привет, с вами TagdTagd. И это вторая часть. Практическая. С первой частью можешь озн…
  6. Sep 11, 2026🤖 DevOps в эпоху AI трансформации: что работает уже сейчас! 17 сентября Сбер собирает Dev…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →