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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Как легко и красиво прочитать конфиг файл башем?  (Прочитано 1439 раз)

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

Оффлайн Master_Sergius

  • Автор темы
  • Активист
  • *
  • Сообщений: 528
  • i3
    • Просмотр профиля
Структура такова:

[section]
option1
option2
...

Если просто source mycfg.cfg, то все переменные считываются, но получается ещё такое сообщение
bash: line 1: [text]: command not found

Вот, надо бы ещё и без такого сообщения, как этого добиться?
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3031
    • Просмотр профиля
Делать не просто, а как надо. Считывать строки и анализировать.
Если не команда, то игнорировать. Либо передавать на вход bash файл,
отфильтрованный с помощью grep, без [section].
Пётр.

Оффлайн Master_Sergius

  • Автор темы
  • Активист
  • *
  • Сообщений: 528
  • i3
    • Просмотр профиля
ну через греп, конечно, хорошо, но если я хочу все параметры сразу, то хреновато выходит. Если 1-3 параметра, то греп - идеальный вариант
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Master_Sergius,
chmod +x скрипт
./скрипт
Wars ~.o

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
source $(grep -v "^\[" mycfg.cfg)
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Master_Sergius

  • Автор темы
  • Активист
  • *
  • Сообщений: 528
  • i3
    • Просмотр профиля
source $(grep -v "^\[" mycfg.cfg)

вот, пропустило секцию и сразу же параметр за ней:
bash: font=Arial: No such file or directory

Что-то здесь не так
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Стоп-стоп, если файл вида font=Arial почему используется source? Насколько мне не изменяет память, то команда присвоения переменных export.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Master_Sergius

  • Автор темы
  • Активист
  • *
  • Сообщений: 528
  • i3
    • Просмотр профиля
Ну, так-то так, но export - експортирует переменную за раз. К тому же, на форумах встречал такой фокус из source, только там был конфиг файл без секций. И вроде работает и с секциями, только на них матерится. Пока что, Я грепом беру нужные, но должно же быть решение, или нет?
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Master_Sergius,
прямой и выполняй?
никак.
Wars ~.o

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
1 вариант
Код: (bash) [Выделить]
grep -v "^\[" mycfg.cfg | while read option ;
do
    export "$option";
done
2 вариант
Код: (bash) [Выделить]
grep -v "^\[" mycfg.cfg > mycfg.tmp
source mycfg.tmp
rm mycfg.tmp
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
точка пробел файл
. /path/to/file
Wars ~.o

Оффлайн Master_Sergius

  • Автор темы
  • Активист
  • *
  • Сообщений: 528
  • i3
    • Просмотр профиля
Угу, ну ясно... Что ж, всем большое спасибо за ответы!
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

 

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