Проверьте день недели из рассчитанного дня в сценарии оболочки - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь выяснить день недели по датам прошлого месяца в al oop, но у меня есть ошибка

'past_month_date: command not found'

$ past_month_date вычислено верно и имеет формат 20200131 Но если я использую дату, тогда она работает.

weekday=$(date +%a)

вот мой сценарий оболочки:

#!/bin/bash

day_num=$(date +%u)
date=$(date +%Y%m%d)
month=$(date +%m)
year=$(date +%Y)

if [ $day_num -eq 1 ]
then
    for (( h = 2; h <= 31; h ++))
    do
        past_month_date=$(date -d "-1 month" +%Y%m$h)
        echo $past_month_date
        weekday=$(past_month_date +%a)
        echo $weekday
        #if [ $weekday -ne $sunday ]
        #then
            #....
        #fi
    done
fi

Ответы [ 2 ]

1 голос
/ 22 января 2020

ваша переменная дня недели должна быть такой:

weekday=$(date --date $past_month_date +%a)
1 голос
/ 22 января 2020

Я думаю, что проблема в разнице между датой и 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)

Я только что сделал копию вашего примера сценария и внес это изменение, и оно, похоже, работает для меня:)

...