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

Re: Evaluacio de variables en bash



* [17/09/04 16:26] Lluis:

<snip>

> --- 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.

> 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.

ernest@tty3:~ $ cat prova.txt
bar="fuck the pope n the virgin mary"
ernest@tty3:~ $ echo $bar

ernest@tty3:~ $ source prova.txt
ernest@tty3:~ $ echo $bar
fuck the pope n the virgin mary

Si és una opció de la línia d'ordres és el mateix, l'has de posar entre
cometes i el $1 o el que sigui contindrà totes les paraules.

> 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.

> 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.

-- 
ernest

That's all you need tae dae in life. Just be yourself, he'd tell me.
It was the most difficult, challenging thing anybody ever asked of me.
--Irvine Welsh, Glue.



Reply to: