Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Как изменить подключаемый файл настроек bash скрипта?  (Прочитано 1449 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн jo80

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Добрый день,
Подскажите пожалуйста как изменить подключаемый файл настроек bash скрипта.
Я имею ввиду, что например в теле bash скрипта подключен файл следующим образом

. /etc/myconfig.cfg

А файл myconfig.cfg имеет значения типа

name="vasily"
i="1"

Собственно вопрос как из терминала удобно изменять строки "vasily" и "1" ?

Оффлайн The Green Side

  • Старожил
  • *
  • Сообщений: 1178
    • Просмотр профиля
export name="ivan"
Debian 11, Debian 11 Server

Оффлайн jo80

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Спасибо за ответ. А как изменить значение из терминала? Я имею ввиду там есть какая то конструкция что-то вроде
name="ivan" >>> ./myconfig.cfg

Оффлайн The Green Side

  • Старожил
  • *
  • Сообщений: 1178
    • Просмотр профиля
Как правило, https://ru.wikipedia.org/wiki/Sed

Заменить файл полностью можно проще:
echo 'name="ivan"' > ./etc/myconfig.cfg

Или дописать в конец:
echo 'name="ivan"' >> ./etc/myconfig.cfg
« Последнее редактирование: 24 Сентября 2020, 21:28:04 от The Green Side »
Debian 11, Debian 11 Server

Оффлайн jo80

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Это да, но мне то нужно заменить строковое значение и вроде бы для этого есть специальная конструкция

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6691
  • 20% Cooler
    • Просмотр профиля
sed -i 's/name="ivan"/name="vasily"/' ./fileлибо если значения уникальны
sed -i 's/ivan/vasily/' ./file
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн jo80

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
sed -i 's/name="ivan"/name="vasily"/' ./fileлибо если значения уникальны
sed -i 's/ivan/vasily/' ./file

Да, это вариант. Но там есть конструкция специально для того что-бы динамически значения менять в  файлах настроек из bash.
« Последнее редактирование: 25 Сентября 2020, 00:33:23 от jo80 »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6691
  • 20% Cooler
    • Просмотр профиля
вы про подстановку переменных? (Больше ничего на ум не приходит)
$: echo $HOME
/home/alien
$: echo ${HOME/alien/user}
/home/user
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн jo80

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
вы про подстановку переменных? (Больше ничего на ум не приходит)
$: echo $HOME
/home/alien
$: echo ${HOME/alien/user}
/home/user

Да, но дело в том, что мне нужно, что-бы новое значение не только заменило старое, но и записалось в файл в место старого.

Оффлайн aSmile

  • Активист
  • *
  • Сообщений: 754
    • Просмотр профиля
Да, это вариант. Но там есть конструкция специально для того что-бы динамически значения менять в  файлах настроек из bash.

Так и не понял, чем вариант с sed не устоил?

Оффлайн jo80

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
    • Просмотр профиля
Да, это вариант. Но там есть конструкция специально для того что-бы динамически значения менять в  файлах настроек из bash.

Так и не понял, чем вариант с sed не устоил?
Вариант с sed в принципе хорош, но просто я хочу попробовать нейронную сеть сделать и думаю что непосредственно предусмотренная конструкция будет быстрей заменять значения чем sed. А для этой задумки скорость имеет значение.

Оффлайн Malamut

  • Ubuntu Member
  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
  • Я добрый, честно!
    • Просмотр профиля
    • Моя страница на Launchpad
Скорость и баш - понятия несовместимые. Если вам надо изменить файл, то собственно source тут ни при чём. Используйте sed, perl, может даже awk. Или что-то ещё. Сам баш не имеет никаких конструкций для изменения файла по шаблону. Но. Если список переменных в этом вашем файле у вас фиксирован, то можно написать скрипт, который будет заменять значение для указанной переменной и писать новый файл myconfig на чистом баше. Но в этом случае файл будет каждый раз перегенерироваться целиком и там будут оставаться только переменные (все комментарии и форматирование будет удаляться)
"Носителем суверенитета и единственным источником власти в Российской Федерации является ее многонациональный народ" Конституция РФ

Оффлайн valrust

  • Активист
  • *
  • Сообщений: 364
    • Просмотр профиля
В bash скрипт можно передавать параметры и их использовать в скрипте.

Например, создадим скрипт с именем "param.sh"
(Нажмите, чтобы показать/скрыть)
И его можно запустить с параметрами:
Код: (bash) [Выделить]
bash param.sh vasily 1

 

Страница сгенерирована за 0.073 секунд. Запросов: 25.