ENOSIG Discussie (threads)


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

Re: bash local


Hoi Wim,

Ik neem de vrijheid de lijst te cc-en en je antwoord aan mij hieronder te quoten...

On Fri, May 25, 2018 at 05:11:23PM +0000, Wim wrote:
> On Fri, 25 May 2018 16:42:39 +0200 Joost van Baal-Ilić <joostvb-enosig-people@xxxxxxx> wrote:
> > On Fri, May 25, 2018 at 12:56:53PM +0000, Wim wrote:
> 
> Minder code:
> 
> function localtest()
> {
> 	local aaaa=$1
> 	eval "$2='$aaaa'"
> }
> 
> echo Andere variablenaam
> localtest 34 result
> echo $result
> 
> echo "Variablenaam die ook in de functie (als local) voorkomt"
> localtest 34 aaaa
> echo $aaaa

Dank je, dat maakt t voor mij ietsje duidelijker.

> > > script draai dan krijg ik geen output als de variable naam dezelfde is in de
> > > functie en in de de functie aanroepende code zoals de output laat zien.  Ik
> > > kan het niet verklaren want de local declaratie zou dat toch mogelijk moeten
> > > maken.  Zie ik wat over het hoofd?
> > 
> > Ik snap niet helemaal wat je wilt.  Wat ik wel "eng" vindt is dat je doet
> > 
> >  eval "$3='$cccc'"

> Wat is daar eng aan? cccc wordt in $3 gezet waardoor de waarde van cccc
> terugkan naar de aanroepende functie. Mogelijk is er een nettere oplossing
> maar die heb ik ondanks het nodige onderzoek lange tijd geleden nog niet
> gevonden. Dit werkt goed voor allerhande variablen.

Ik snap dat t voor jou werkt, maar ikzelf ben aan andere programmeer-technieken
gewend.  Ik vermoed dat je datgene wat je helemaal uiteindelijk wilt bereiken
ook zonder die 'eval' voor elkaar kunt krijgen, en ik vermoed dat dan ook dat
local-probleem (misschien is dat wel bug in bash) je niet meer dwars zit.

Het feit dat aanroepen van

 localtest a b

een variable met de naam $b creeert is voor mij onverwacht.  Had niet gedacht
dat zoiets kon in bash.  Ik ben gewend dat argumenten van functies door
functies gelezen worden, en niet gebruikt worden als variabele-namen.

> > .  Is $3 niet read-only daar?  En wordt daar wel de locale $cccc gebruikt?
> 
> Ik vermoed van niet want "$3" krijgt de waarde van cccc.

Inderdaad, je hebt gelijk.

Ik ben benieuwd welk probleem je op aan t lossen bent.

Groeten,

Joost


Follow-ups:


[ Date Index] [ Thread Index]