[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Evaluacio de variables en bash



El 20/09/04, a les 11:27:43, Ernest Adrogué ens deleità amb les següents paraules:
> > --- fitxer.conf ---
> > DIST=Test
> > VER=0.1
> > # Location options
> > # SEARCHPATH already exists pointing to the root dir of dscdbuilder
> > ROOT=/espai
> > HDDIR=HD_contents
> > # -
> > HDDIST=$ROOT/$HDDIR/${DIST}_$VER
> > 
> > # Other options
> > FULL_STAGES="base clean templates"
> > 
> > --- script.sh ---
> 
> Així d'entrada em sembla que la variable HDDIST no hauria d'anar aquí.
> Ara potser dic una tonteria però jo la definiria just abans de quan la
> necessitis. O fins i tot no cal ni definir-la si vols, pots posar les
> altres variables directament.
> 
be, si que em cal per tal com he fet el programet, que... en fi, diguem que es
una de les premises trobar la definicio per defecte de la variable en aquest
fitxer... :P

en quant a definir-ho mes amunt, no en trec res de bo, i nomes em faria que el
valor de la variable fos nul per culpa de que no tindria encara definit el
valor de les variables que utilitza (ROOT, HDDIR, DIST, VER)

> > function load_config
> > {
> >   [ -f $CONFIG ] || error "Could not find config file $CONFIG"
> >   # aixi es carreguen totes les variables de configuracio del fitxer
> >   # $CONFIG com si les declares a ma
> >   . $CONFIG
> >   # aquesta es una guarrada per tractar el cas de la variable
> >   # 'FULL_STAGES', que conte multiples paraules i el "for i ...; do"
> >   # llegeix paraula a paraula...
> >   # es pot llegir linia a linia ??????
> >   local VAR="foo"
> >   local VAL="bar"
> >   for i in `echo $1 | sed -e s/"\,"/" "/`; do
> >     # detect multiword variables
> >     if [ -z `echo $i | grep '='` ]; then
> >       # encara estem en una variable multiparaula
> >       VAL="$VAL $i"
> 
> No entenc quin problema hi ha amb les variables multiparaula, que jo
> sàpiga no cal fer res especial.
> 
si, si t'hi fixes les processo amb un "for i ...; do ... done", i aixo va
paraula a paraula (i, per tant, cal vigilar leas variables multiparaula), de
totes maneres, aixo es simplement molest, pero no un problema

> > Com podeu veure, si faig
> > $ dscdbuilder.sh -v HDDIST=/tmp
> > HDDIST tindra el valor "/tmp", pero si faig
> > $ dscdbuilder.sh -v VER=1
> > HDDIST tindra per valor "/espai/HD_contents/Test_0.1", enlloc de
> > "/espai/HD_contents/Test_1"
> 
> Mira el paràgraf #1. Tampoc estaria malament posar uns quants "echo
> $HDDIST" a llocs estratègics per controlar com varia el valor.
> 
el problema esta en que jo voldria que es reevaluessin totes les variables que
en continguin d'altres, i aixo em sembla que no es pot fer...

el que s'hauria de fer es:
- carregar valors per linia de comandes
- carregar variables del fitxer per defecte que no hagin estat redefinides

la cosa esta en que si faig un "source" del fitxer de config, aixo funciona,
pero amb la "tecnica" que vaig posar al principi no (era allo de que el
_valor_ de HDDIST era literalment "$ROOT/$HDDIR/${DIST}_$VER")

de totes maneres se m'ha acudit una forma de fer-ho; creant un fitxer de
configuracio temporal amb nomes les variables que vull exportar (les variables
per defecte que no hagin estat redefinides per linia de comandes)

em sembla un pel retorçat tot aixo per una merdeta d'script que en realitat no
es la feina que vull fer, sino que se suposa que m'ha d'ajudar a fer-la mes
facil XD

de moment ho faig de forma que les variables que ja he anomenat "recursives"
no funcionen com haurien, pero si mes no funciona :)

quan tingui una miqueta mes de temps ja em dedicare a fer-ho be

> > En fi, si algu ha arribat fins aqui, MOLTES GRACIES!! i si a sobre em pot
> > ajudar... en fi, aleshores moltissimes graces :)
> 
> No sé si t'hauré ajudat gaire però ho he intentat :)
> 
> Jo quan una cosa no em surt, el que faig és agafar el "concepte"
> simplificat al màxim i provar-ho en un script a part, fins que funciona
> o arribo a la conclusió que no es pot fer i ho faig d'una altra manera.
> 
ui! no saps prou quantes proves he fet :D

doncs be, moltes gracies!
-- 
 "And it's much the same thing with knowledge, for whenever you learn
 something new, the whole world becomes that much richer."
 -- The Princess of Pure Reason, as told by Norton Juster in The Phantom
 Tollbooth



Reply to: