ENOSIG Discussie (threads)


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

Re: bash local


Hoi Joost, Allen,

On Fri, 25 May 2018 19:51:51 +0200 Joost van Baal-Ilić <joostvb-enosig-people@xxxxxxx> wrote:
> Ik neem de vrijheid de lijst te cc-en en je antwoord aan mij hieronder te quoten...

Ok. Deze ook naar Allen :-)

> 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.  

:-) Het voordeel van een structurele opleiding ? :-)

> Ik vermoed dat je datgene wat je helemaal uiteindelijk wilt bereiken
> ook zonder die 'eval' voor elkaar kunt krijgen,

Dat zou mooi zijn. Als je, iemand een idee hebt / heeft . . . .

> en ik vermoed dat dan ook dat
> local-probleem (misschien is dat wel bug in bash) je niet meer dwars zit.

Er is gemakkelijk om heen te werken. Het zit me dus niet dwars. Wat wel het gevolg is is dat er opgelet moet worden bij het kiezen van variable namen. Werkt de local functie wel vraag ik mij af.
Ik liep er tegen aan tijdens het schrijven van een programma en toen heb ik een proof of concept script geschreven. Mogelijk is het inderdaad een bug.

> 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.

Zo zie je maar weer :-)
 
> > > .  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.

Dank je

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

? Mogelijk heb ik deze vraag hierboven beantwoord. Zo niet dan graag wat verduidelijking.

Follow-ups:

Gerelateerd:


[ Date Index] [ Thread Index]