Toon posts:

Bash variabele probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil het volgende doen, maar ik kom er niet helemaal uit

er is een serie variabelen genummerd, Woord1 woord2 woord3. Deze worden gevult met de volgende loop


code:
1
2
3
4
5
6
7
8
teller=0
export teller

for i in $(cat $file1) 
do
    export "woord$teller"="$i"
    teller=$[ $teller + 1 ]
done


nu wil ik die woorden in een andere functie eventueel weer aanroepen, maar dan wil ik dus weer met een variabele teller werken zodat ik eventueel het volgende kan doen


code:
1
2
3
currentword=0

echo $woord[ currentword + 1 ]


De volgende dingen heb ik al geprobeerd maar werken niet. ze printen of niks, of een syntaxfout, of alleen de waarde van currenword, maar ik moet woord+(waarde currentword) dus als 1 variabele hebben

probeersels :)

code:
1
2
3
4
echo ${word$[ $currentword + 1 ]}
echo $[word$[ $currentword + 1]]
echo $word$currentword+1
echo word$[ $wordcounter + 1]


Weet iemand of het überhaupt mogelijk is? en zo ja, hoe deze declaratie ongeveer of precies gaat?

alvast bedankt !

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Je 4e probeersel werkt bijna, maar je hebt het commando eval nog nodig, ziehier
code:
1
2
3
4
5
6
7
8
$ woord1=jan
$ woord2=piet
$ COUNTER=1
$ eval echo $`echo woord$[COUNTER]`
jan
$ eval echo $`echo woord$[COUNTER + 1]`
piet
$

Het kan vast en zeker netter, maar dit is even snel een optie, volgens mij is dit wat je bedoelt, het is dus mogelijk :). Als je nu dit in een loopje gooit waarbij je $COUNTER steeds ophoogt moet het vast lukken, succes :)

[ Voor 5% gewijzigd door blaataaps op 04-11-2003 11:48 ]


Verwijderd

Topicstarter
Bedankt, maar hij wil het nog niet helemaal doen

Ik wil die variabele gaan gebruiken in een andere functie

code:
1
2
3
4
5
6
if [ $(grep -l "eval echo $`echo woord$[ wordcounter ]`" $2) = 0 ]
then
 echo De text is gevonden
else
echo de text is niet gevonden
fi


Hij blijft alleen mekkeren dat de file niet gevonden is
$2 is de 2e file die meegegeven wordt aan het script en die is wel geinitialiseerd.

  • blaataaps
  • Registratie: Juli 2001
  • Niet online
Ik krijg hier een andere foutmelding bij jouw script, waar het precies fout gaat bij jou weet ik zo niet, maar het kan zijn dat het in de soep loopt door het ruime gebruik van $ ( " en ' in de if-regel. Als ik de eval buiten de if houdt, werkt het hier gewoon, zie
code:
1
2
3
4
5
6
7
8
9
10
#!/bin/bash
woord1=ditwoord
wordcounter=1
currentword=$(eval echo $`echo woord$[ wordcounter ]`)
if [ $(grep -l $currentword  $2)  ]
then 
  echo gevonden
else 
  echo niet gevonden
fi

Als $2 dan inderdaad een bestand is waar woorden in staan, checkt hij netjes of ditwoord er instaat of niet.

Verwijderd

Topicstarter
Ik ga het proberen :) bedankt!