[linux] Met bash parameter functie aanroepen

Daniel C. von Asmuth asmuth op bakunin.xs4all.nl
Zo Dec 17 16:48:35 CET 2017


Aldus schreef Frans van Berckel op Sun, Dec 17, 2017 at 04:21:48PM +0100:
> Ik ben een bash script aan het schijven. Een onderdeel daarin plaats ik
> het liefst in een functie, met de naam download.
> 
> De vraag is alleen, hoe kan ik deze functie het beste laten uitvoeren,
> met een parameter bij het starten van het script?
> 
> # lnxsrc2pkg.sh download

Gestructureerd programmeren bereik je o.a. door je programma (of shell
script) onder te verdelen in functies (of methods of subroutines) 
en die zo nodig nog verder op te splitsen. Bij voorkeur schrijf je 
net als in een Pascal programma de functiedefinities aan het begin
of in een include-file en het hoofdprogramma aan het einde. 

Een bash functie kun je aanroepen met een parameter op dezelfde manier 
waarop je het script zelf parameters meegeeft en hetzelfde geldt 
voor het controleren van de waarden ervan. Een functie kan ook een
statuscode retourneren. 

Een andere manier is om een functie aan te roepen met 
	result="$(download ${filename})"
	echo "${result}" >/dev/stderr

Dat betekent dat het download programma of de download() functie wordt
uitgevoerd in een subshell en dat je de uitvoer ervan (dus niet het
functieresultaat) ontvangt in de string variabele $result; dat is geen
slimme techniek als de output erg omvangrijk is. 

> De opzet is, als dat werkt, omdat met meer functies te doen.
> 
> En een soort van help tekst, van als er helemaal geen parameter achter
> het bash script staat, is ook handig voor het gebruik, denk ik.

Unix heeft de gewoonte om dergelijke teksten kort te houden en de
manuals iets uitgebreider te maken, maar nutig zjin ze zeker.

Linux is niet moeilijk. Je vindt het antwoord zo met behulp van 'man' of
anders met Google; je moet alleen de naam van het commando dat je zoekt
weten. 

Kijk eens op http://wiki.bash-hackers.org/howto/getopts_tutorial

> Heb jij zoiets al eens gemaakt?
Dat wil je niet weten!

> 
> Met vriendelijke groet,
> 
> 
> Frans van Berckel

Merry TuXmas, ho, ho, ho!


Daniel

-- 
	
		Geeks of a feather cruft together
		


Meer informatie over de Linux maillijst