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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

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

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

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

Оффлайн Master_Sergius

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

Оффлайн victor00000

  • Забанен
  • Старожил
  • *
  • Сообщений: 15570
  • Глухонемой (Deaf)
    • Просмотр профиля
Master_Sergius,
chmod +x скрипт
./скрипт
Нельзя друзья, дулу - AnrDaemon видите?
~.o

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6012
  • 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

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

Оффлайн Master_Sergius

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

Оффлайн victor00000

  • Забанен
  • Старожил
  • *
  • Сообщений: 15570
  • Глухонемой (Deaf)
    • Просмотр профиля
Master_Sergius,
прямой и выполняй?
никак.
Нельзя друзья, дулу - AnrDaemon видите?
~.o

Оффлайн Azure

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

Оффлайн victor00000

  • Забанен
  • Старожил
  • *
  • Сообщений: 15570
  • Глухонемой (Deaf)
    • Просмотр профиля
точка пробел файл
. /path/to/file
Нельзя друзья, дулу - AnrDaemon видите?
~.o

Оффлайн Master_Sergius

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

 

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