Я думаю, что проблема в разнице между датой и past_month_date. Использование даты в вашем скрипте работает, потому что дата - это команда, которая возвращает дату / время (по умолчанию это текущая дата / время) и использует различные аргументы, такие как +% a, для ее форматирования по-разному.
В вашем скрипте past_month_date - это переменная, которая используется для хранения значения, возвращаемого командой date, для даты один месяц go, отформатированной определенным образом. Переменная не может изменить формат, просто передав параметр типа «+% a», поэтому вам, вероятно, потребуется использовать другую команду для преобразования этой даты в нужный вам формат. К счастью, есть команда, которая делает именно это: дата. (Как мне напомнил этот вопрос SO ).
Если вы называете date и передаете ей параметр "--date = $ {past_month_date}", а также любое форматирование, которое вы нужно (например, "+% a"), тогда я думаю, вы найдете, что он делает свою работу. Таким образом, ваша строка "weekday =" будет выглядеть так:
weekday=$(date --date=${past_month_date} +%a)
Я только что сделал копию вашего примера сценария и внес это изменение, и оно, похоже, работает для меня:)