Portál AbcLinuxu, 6. května 2025 00:24

Dotaz: bash: konstrukce proměnné obsahující v názvu parametr scriptu/funkce

1.2.2005 14:22 © | skóre: 37 | blog: escaped
bash: konstrukce proměnné obsahující v názvu parametr scriptu/funkce
Přečteno: 406×
Odpovědět | Admin
Dobrý den.

Vím, že je to asi pěknej TeXismus, ale potřeboval bych vytvořit proměnnou, jejíž název by sestával z řekněme "statické" části a parametru, který je předán funkci či scriptu.
#!/bin/bash

funtion foo () {
local BAR_$1=$2    # nefunguje, mela by vzniknout promenna
echo "$BAR_$1"     # BAR_"obsah $1"=$2
}

foo Ahoj svete     # melo by vypsat "svete"
                   # uvnitr funkce by mela vzniknout promenna
                   # BAR_Ahoj="svete"
exit 0
Jak na to? Děkuji.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.2.2005 14:45 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: bash: konstrukce proměnné obsahující v názvu parametr scriptu/funk
Odpovědět | | Sbalit | Link | Blokovat | Admin
Můžeš použít eval, který definitivně smíchá syntaxi a data, a/nebo symbolické reference ${!...}
eval BAR_$1=$2
ref=BAR_$1
echo ${!ref}
Pokud to skutečně potřebuješ a nejde to rozumně napsat bez toho, tak si ovšem myslím, že sis pro implementaci vybral nevhodný jazyk.
1.2.2005 14:49 © | skóre: 37 | blog: escaped
Rozbalit Rozbalit vše Re: bash: konstrukce proměnné obsahující v názvu parametr scriptu/funk
To bude ono. Dik. Nemohl jsem na to přijít ani s tím eval. Dík moc. Teď už se s tím nějak poperu.
1.2.2005 14:55 © | skóre: 37 | blog: escaped
Rozbalit Rozbalit vše Re: bash: konstrukce proměnné obsahující v názvu parametr scriptu/funk
Pokud to skutečně potřebuješ a nejde to rozumně napsat bez toho, tak si ovšem myslím, že sis pro implementaci vybral nevhodný jazyk.
Bohužel, musí to být v BASHi. I s tím to snad bude vcelku rozumné, alespoň doufám. Není to nic extra velikého, jen jedna fukce, která má být jádrem pro rozsáhlejší script...
1.2.2005 15:07 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: bash: konstrukce proměnné obsahující v názvu parametr scriptu/funk
Safr, jseš rychlejší. To je tím, že to nepoužívám. Jinak je to príma věc:
#!/bin/bash
foo () {
local var=BAR_$1
eval $var=$2
echo ${!var}
}
foo Ahoj svete     # melo by vypsat "svete"
                   # uvnitr funkce by mela vzniknout promenna
                   # BAR_Ahoj="svete"
echo $BAR_Ahoj
exit 0
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
1.2.2005 15:18 © | skóre: 37 | blog: escaped
Rozbalit Rozbalit vše Re: bash: konstrukce proměnné obsahující v názvu parametr scriptu/funk
Taková věc je skutečně príma. V TeXu s takovýma konstrukcema zacházím v jednom kuse. Jsem rád, že to jde. Už jsem se začal bát, protože jsem na takové uvažování nějak zvyklej (asi až moc)...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.