#linux #bash #shell
#линукс #удар #ракушка
Вопрос:
Мне нужно обновить исходный файл конфигурации в сценарии оболочки в конце выполнения сценария. У меня есть дата по умолчанию в файле date_cfg.lkp.
''' sdate=2021-12-09 '''
Мой файл сценария оболочки принимает дату в качестве параметра, и он должен увеличить дату и обновить эту дату в приведенном выше файле date_cfg.lkp, и это работает, если я не создаю файл, но если я создаю файл lkp в сценарии, он не обновляется, а также такое же поведение в командной строке.:
''' #!/usr/bin/bash date1=$1 cfg=~/date_cfg.lkp source $cfg date1=$(date -d"$date1 1 day" "%Y%m%d") date1=$(date1 -d $date1 "%Y-%m-%d") echo $date1 echo $cfg_date sed -c -i "s/($sdate *= *).*/1$date1/" $cfg '''
Пожалуйста, помогите мне обновить поле sdate, хранящееся в файле lkp, с увеличенной датой в сценарии во время поиска, и, пожалуйста, обратите внимание, что мне нужно создать файл, чтобы прочитать некоторые другие поля.
Ответ №1:
Попробуйте изменить последнюю строку следующим образом.
sed -c -i "s/$sdate/$date1/" $cfg
Ответ №2:
ваша команда sed не очень хороша:
sed -i "/sdate=/ s/.*/sdate=$date1/" date_cfg.lkp
Что такое-c в команде ? У меня нет этого аргумента.