The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Разбор конфига по всем переменным, !*! Konstantin, 22-Авг-03, 12:19  [смотреть все]
Снимите меня с тормоза!
Есть конфиг типа
param1=111
param2=222
Надо разобрать его шеллом так, чтобы получить переменные
$param1, param2 со значениями соотв-но 111 и 222

Спасибо

  • Разбор конфига по всем переменным, !*! etz, 12:41 , 22-Авг-03 (1)
    >Снимите меня с тормоза!
    >Есть конфиг типа
    >param1=111
    >param2=222
    >Надо разобрать его шеллом так, чтобы получить переменные
    >$param1, param2 со значениями соотв-но 111 и 222
    >
    >Спасибо


    cat config.txt| grep -v '^ *#'| while read param1 param2; do                    
            echo "$param1 - $param2"
    done

    смотри хинты, это оттуда. (https://www.opennet.ru/tips/sml/)

    • Разбор конфига по всем переменным, !*! Konstantin, 16:11 , 22-Авг-03 (3)
      >>Есть конфиг типа
      >>param1=111
      >>param2=222
      >>Надо разобрать его шеллом так, чтобы получить переменные
      >>$param1, param2 со значениями соотв-но 111 и 222
      >
      >
      >cat config.txt| grep -v '^ *#'| while read param1 param2; do
      >        echo "$param1 - $param2"
      >done
      Вообще-то просили не напечатать, а создать кучу переменных.
      Т.е., в приведенном примере надо не
      == echo "$param1 - $param2" ==
      а == eval `echo ${param1}=${param2}` ==
      У меня это работает, но почему-то только в таком виде:
      while read name value
      do
        eval `echo ${name}=${value}`
      done < config.txt
      Если же я пробую не прочитать прямо из config.txt,
      а сделать типа:
      sed 's/=/ /' config.txt | while .......
      нифига не получаю. Почему???


  • Разбор конфига по всем переменным, !*! sas, 13:31 , 22-Авг-03 (2)
    >Снимите меня с тормоза!
    >Есть конфиг типа
    >param1=111
    >param2=222
    >Надо разобрать его шеллом так, чтобы получить переменные
    >$param1, param2 со значениями соотв-но 111 и 222
    >
    >Спасибо

    sas@tibook:tmp # cat >conf <<-EOF
    >   # --- my comment    ...
    > p1=1111
    > p2=2222
    > EOF

    sas@tibook:tmp # eval $(awk -F = '/^[^#]*=/{ vars = sprintf( "%s %s", vars, $1); print $1 "=\"" $2 "\";" }END { print "vars=\"" vars "\";" }' conf)

    sas@tibook:tmp # for p in $(echo $vars); do eval echo $p=\$$p ; done
    p1=1111
    p2=2222

    ili

    sas@tibook:tmp # echo $p1
    1111

    Also it is possible to add export to awk scriptand use bash's array instead of vars string with parameters delimited by ' ', but this is just a draft

    Good luck
    --- sas




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру