- Разбор конфига по всем переменным, 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
- Разбор конфига по всем переменным, konst, 16:37 , 22-Авг-03 (4)
==ФАЙЛ /tmp/config.txt var1=1 var2=2 export var1 export var2 ==============ФАЙЛ set.sh #! /bin/sh conf_file='/tmp/config.txt' . $conf_file echo $var1 =============
- Разбор конфига по всем переменным, sas, 20:50 , 22-Авг-03 (5)
Hi,Sorry but your solution has some limitations: 1. Your config MUST have a valid shell syntax in order to be sourced. Config file can have some other syntax. 2. Also my solution offers variable "vars" which has a list of all parameter's names, delimited by spaces , which is very helpful for generic processing Thanks --- sas PS I understand that my suggestion is also not perfect. For example i'm not checking for double quotes inside parameters value, but as i said it is draft. >==ФАЙЛ /tmp/config.txt >var1=1 >var2=2 >export var1 >export var2 >============ > >==ФАЙЛ set.sh >#! /bin/sh >conf_file='/tmp/config.txt' >. $conf_file >echo $var1 >=============
|