У меня есть скрипт, который создает папки предыдущей недели с номером недели в названии. Вот как я получаю значение номера текущей недели и присваиваю номер предыдущей недели.
WEEKNBR=$(date +"%V")
PREVWK=$((WEEKNBR-1))
Значение WEEKNBR
в двухзначной форме, например. «Week05», но PREVWK
будет «WEEK4».
Как можно вычесть 1 из WEEKNBR
и получить результат, 0
если это применимо?
macos
command-line
bash
Logiclust
источник
источник
Ответы:
Вы можете использовать,
date
чтобы сделать арифметику для вас. С датой BSD:От
man date
:Если вы установили и используете GNU date:
источник
if [[ $PREVWK == 0 ]] . then . PREVWK=52 . YEAR=$((YEAR-1)) . # echo 'prevwk:' $PREVWK . # echo 'prevyear:' $YEAR . fi
«Однострочник» (ОК, двухсторонний)
источник
Я думаю, что вы после здесь, это способ проверить, если
$PREVWK
это 2 цифры или нет, и в этом случае вы соответственно либо предшествуете a0
к началу существующего числа или нет.Реализация:
Он просматривает количество цифр в переменной (убедитесь, что это всегда число) и решает, состоит ли он из менее 2 цифр. Если это так, он добавляется
0
, иначе он оставляет число в покое. Таким образом, недели вроде23
останутся23
прежними023
, и так далее.Дайте мне знать, если это работает для вас или вы ищете другой / другой способ достижения этого. Вы также можете проверить, если число в целом меньше 10, что означает, что
0
необходимо добавить начальную букву.источник
Единый подход , который не сломается, когда наступит новый год, и который всегда дает правильный номер недели за семь дней до текущего момента:
Обратите внимание, что я использую строчные имена, потому что они не являются (или не должны быть) переменными окружения; увидеть:
PS: я вижу, что muru написал по существу идентичный ответ, но я несколько часов открывал эту вкладку, прежде чем вернуться к ней, и не смог обновить ее.
источник