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: