web2 logo

Bash shell scripts parameters via de commandline

Als je een script aanroept, dan kan je via de opdrachtregel parameters meegeven die het script als invoer kan gebruiken.
De variabele die het aantal parameters bevat dat is meegegeven bij het aanroepen van het script is $#.
De parameters zelf kan je opvragen via $ met een volgnummer, zoals $1, $2, $3 etc.
Met de opdracht shift kan je de paramaters laten opschuiven zodat $2 naar $1 gaat, $3 naar $2, etc.
Als je een cijfer meegeeft aan shift, dan schuiven de parameters meerdere plaatsen op, afhankelijk van dat meegegeven cijfer.
#!/bin/bash # dit script somt de argumenten op die je meegeeft op de commandline echo "het aantal argumenten is: $#" while [[ $# -gt 0 ]] do argument="$1" echo ": $argument" shift done
Voorbeeld uitvoer:
$ argumenten.sh kees 129,7 "rood en blauw" het aantal argumenten is: 6 : kees : 129,7 : rood en blauw

Benoemde parameters gebruiken

Als je meerdere parameters kan meegeven is het handig als ze benoemd zijn, dan maakt de volgorde waarin ze worden meegegeven niet meer uit.
#!/bin/bash # voorbeeld met benoemde parameters echo "het aantal argumenten is: $#" # benoemde parameters toekennen aan variabelen # naam meegeven met -n of --naam # kleur meegeven met -k of --kleur # leeftijd meegeven met -l of --leeftijd while [[ $# -gt 0 ]] do argument="$1" case $argument in # -n of --naam -n|--naam) NAAM="$2" # de waarde is het volgende argument shift 2 ;; # -k of --kleur -k|--kleur) KLEUR="$2" # de waarde is het volgende argument shift 2 ;; # -l of --leeftijd -l|--leeftijd) LEEFTIJD="$2" # de waarde is het volgende argument shift 2 ;; # onbekende optie *) echo "Onbekend argument: $argument" shift # overslaan ;; esac done echo "Naam: $NAAM" echo "Kleur: $KLEUR" echo "Leeftijd: $LEEFTIJD"
Voorbeeld uitvoer:
$ argumenten.sh -n kees -l 129,7 -k "rood en blauw" het aantal argumenten is: 6 Naam: kees Kleur: rood en blauw Leeftijd: 129,7

Toegevoegd door: Kees de Keijzer
Twitter: @kdkq

~ linux ~

~ Onderwerpen ~

Dit is een website zonder pop-ups

~ Links ~

Design & Development by Cyberwebdesign.nl for web2.nl © 2020.