Commandoregelargumenten lezen

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 arg2

Door argumenten lussen:

#!/bin/bash

# Lus door elk argument.
for arg in "$@"; do
  echo "Argument: $arg"
done

Diepere 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