nAbend, mal ne reine Verständnisfrage:
Soweit ich bis jetzt das Shell Scripting verstanden habe, werden mehrere Parameter an eine Funktion als einzelne Elemente
eines Arrays übergeben. Prinzipiell wäre die Übergabe von 3 Parametern dasselbe, als wenn ich die Parameter in ein Array
aus 3 Elementen schreibe.
Entweder kann ich die Parameter einzeln mittels „$1“, „$2“, … „$n“ abfragen, oder aber mit der internen Variable „$@“ die einzelnen
Elemente als Array von Strings nacheinander in einer for Schleife abarbeiten.
#!/bin/env bash
CMDLIST=( 'wget' 'curl' )
CMD=""
# Returns true if command available
# False if command not found
checkcmd() {
CMD="$1"
if [ $(type -P ${CMD}) ]; then
echo "$CMD"
return 0
else
return 1
fi
}
# Überprüft übergebene Listen
checklist() {
for var in "$@"; do # Schleife um die Variablen abzuarbeiten
COMMAND=$(checkcmd ${var})
RC="$?"
if [ "$RC" -eq 0 ]; then
echo "$COMMAND"
break
fi
done
echo ""
}
checkcmd ${CMD}
RC="$?"
if [ ! "$RC" ]; then
checklist "${CMDLIST[@]}"
fi
Ich hatte ursprünglich die Überprüfung ursprünglich in checklist, habe es aber wegen der allgemeinen Verwendbarkeit rausgenommen.
Gibt es eine Möglichkeit, als ersten Parameter ${CMD} zu übergeben, die restlichen dann als Array? Wobei das Array evtl. um weitere
Kommandos erweitert werden könnte. Tipps für einen besseren „Stil“ sind natürlich auch willkommen. Bin ja noch in der Lernphase
MfG