Bash:
Commandoregelargumenten lezen
Hoe te:
#!/bin/bash
# Print de naam van het script.
echo "Scriptnaam: $0"
# Print het eerste argument.
echo "Eerste argument: $1"
# Print alle argumenten.
echo "Alle argumenten: $@"Voorbeelduitvoer ervan uitgaande dat je script ’example.sh’ heet en je roept ./example.sh arg1 arg2 aan:
Scriptnaam: ./example.sh
Eerste argument: arg1
Alle argumenten: arg1 arg2Door argumenten lussen:
#!/bin/bash
# Lus door elk argument.
for arg in "$@"; do
echo "Argument: $arg"
doneDiepere Duik
Bash ondersteunt al eeuwen commandoregelargumenten; het zijn positionele parameters, $0 tot $9, met $@ en $* die alle tonen. $0 is het script zelf, $1 tot $9 zijn het eerste tot en met het negende argument; haakjes zoals ${10} zijn nodig vanaf het tiende argument.
Het gebruiken van $@ is gewoonlijk beter dan $* omdat het correct omgaat met argumenten die spaties bevatten. $@ geeft elk argument als een apart “woord”; $* combineert ze allemaal in één “woord”.
Je kunt door argumenten heen schuiven met het commando shift, dat $2 naar $1 opschuift, en zo voorts, waarbij de oude $1 wordt weggegooid.
Alternatieven? Zeker. getopts en getopt bieden meer controle voor opties (zoals -h voor hulp) en vlaggenparsen; bekijk ze als $1, $2,… niet voldoende zijn.
Zie Ook
- Bash-handleiding over Speciale Parameters: https://www.gnu.org/software/bash/manual/html_node/Special-Parameters.html
- Gevorderde Bash-scriptgids: https://www.tldp.org/LDP/abs/html/
getoptstutorial: https://wiki.bash-hackers.org/howto/getopts_tutorial