Этот выглядит примерно правильно, у вас есть ||
внутри [[.. ]]
, так что не должно быть конфликта между &&
и ||
.
В любом случае, вы можете немного упростить это. Нет необходимости запускать date
отдельно для каждого теста, просто сначала сохраните значения в переменные, weekday=$(LC_TIME=C date +%a)
и т. д.
Кроме того, список месяцев выглядит так, как будто он включает месяцы с четным числом (2, 4, 6, 8, 10 и 12 ), так что вы можете просто проверить, что:[ "$((month % 2))" = 0 ]
(%
является оператором по модулю ).
Или полностью, если не ошибся:
weekday=$(LC_TIME=C date +%a)
dom=$(date +%-d)
month=$(date +%-m)
if [ "$weekday" = "Thu" ] &&
[ "$dom" -ge 15 ] && [ "$dom" -le 21 ] &&
[ "$((month % 2))" = 0 ]; then
echo A
else
echo B
fi
Использование%-m
(и %-d
), чтобы date
, а не , напечатать начальный ноль. Баш интерпретировал бы это как означающее, что число в восьмеричном формате. Альтернативой может быть удаление с помощью month=${month#0}
.
Вы можете проверить это для произвольных дат, используя date -d
в заданиях:
date=2019-04-17
weekday=$(LC_TIME=C date -d "$date" +%a)
dom=$(date -d "$date" +%-d)
month=$(date -d "$date" +%-m)
Измените следующие строки:
deb [arch=amd64] https://download.docker.com/linux/debian buster stable edge
deb-src [arch=amd64] https://download.docker.com/linux/debian buster stable edge
К
deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian buster stable
для устранения следующей ошибки:
All packages are up to date. W: Skipping acquire of configured file
'stable/source/Sources' as repository 'https://download.docker.com
/linux/debian buster InRelease' does not seem to provide it
(sources.list entry misspelt?)
Вам необходимо удалить исходный репозиторий docker deb-src
.
Затем запустите:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Удалите репозиторий opensuse из каталога /etc/apt/sources.list.d/
.