[+] BASH nazwy zmiennych

Potrzebujesz pomocy z C, C++, perl, python, itp.
ksysinek
Beginner
Posty: 155
Rejestracja: 14 czerwca 2007, 00:33
Lokalizacja: *Miasto know-how

[+] BASH nazwy zmiennych

Post autor: ksysinek »

Dzisiaj w swoim skrypcie znalazłem spory fragment kodu który mógłbym zamienić na petlę while:

Kod: Zaznacz cały

moja_1_zmienna=abc
moja_2_zmienna=123
[...]
moja_123_zmienna=xyz
url1=127.0.0.1/skrypt.php?hash=$moja_1_zmienna
echo "Adres url: $url1"
url2=127.0.0.1/skrypt.php?hash=$moja_2_zmienna
echo "Adres url: $url2"
[...]
url123=127.0.0.1/skrypt.php?hash=$moja_123_zmienna
echo "Adres url: $url123"
Zamieniłem to na odpowiednią pętlę i teraz mam coś w tym stylu:

Kod: Zaznacz cały

moja_1_zmienna=abc
moja_2_zmienna=123
[...]
moja_123_zmienna=xyz
i=1
while [ $i -lt $ilosc_zmiennych ] ; do
url=127.0.0.1/skrypt.php?hash=$moja_$i_zmienna
echo "Adres url: $url"
done
Niestety skrypt w wyniku działania zwraca za każdym razem 127.0.0.1/skrypt.php?hash=
Jak mam sobie z tym problemem poradzić?
Awatar użytkownika
kodama
Junior Member
Posty: 633
Rejestracja: 23 maja 2010, 22:30
Lokalizacja: Poznań

Post autor: kodama »

Ja bym na twoim miejscu wrzucił sobie te wszystkie zmienne do jakiejś macierzy, policzył jej elementy np:

Kod: Zaznacz cały

macierz=( 'aaa' 'bbb' 'ccc' 'ddd' 'eee' )
liczba=${#macierz[@]}
I dalej potraktował to taką pętelką:

Kod: Zaznacz cały

for (( i=0;i<$liczba;i++)); do
url=127.0.0.1/skrypt.php?hash=${macierz[${i}]}
echo $url
done
Wynik takiego skryptu to:

Kod: Zaznacz cały

127.0.0.1/skrypt.php?hash=aaa
127.0.0.1/skrypt.php?hash=bbb
127.0.0.1/skrypt.php?hash=ccc
127.0.0.1/skrypt.php?hash=ddd
127.0.0.1/skrypt.php?hash=eee
ksysinek
Beginner
Posty: 155
Rejestracja: 14 czerwca 2007, 00:33
Lokalizacja: *Miasto know-how

Post autor: ksysinek »

Dziękuję, poradziłem sobie z problemem.
ODPOWIEDZ