Это должно помочь:
#!/bin/sh
file=hyb.txt
nowfile=${1:-20180301}
afterfile="${2:-"$(date -d "$nowfile -1 day" +"%Y-%m-%d")"}"
now=$(date +%Y%m01)
after=$(date -d "$now -1 days" +%Y-%m-%d)
echo sed -i 's/'"$nowfile"'/'"$now"'/g' "$file";
echo sed -i 's/'"$afterfile"'/'"$after"'/g' "$file";
Сценарию нужны аргументы.
Аргумент 1 — это значение now
внутри файла, которое необходимо изменить. Если аргумент 1 не указан, по умолчанию используется 20180301
.
Аргумент 2 — это значение after
, которое нужно изменить внутри файла(afterfile
). Если не указано, значение вычисляется из значения now
внутри файла (nowfile
).
Вызовите сценарий как ./script 20180301 2018-02-28
, чтобы он действовал как исходный сценарий.
Вызовите./script 20180901
(без второго аргумента ), чтобы сценарий вычислил новое afterfile
значение (, в результате чего20180831
).
Если рассчитанные значения работают так, как вам нужно, удалите два echo
перед sed, чтобы скрипт обработал файл.
Нулевой -журнал разрешил эту ситуацию. Однако вики btrfs -не рекомендует его использовать. Я возвращаюсь к zfs на FreeBSD.