function readArgs() {
while getopts "i:o:p:s:l:m" OPTION; do
case "$OPTION" in
i)
input="$OPTARG"
;;
o)
output="$OPTARG"
;;
...
esac
done
}
readArgs
if [[ -z "$input" ]]; then
echo "Not set!"
fi
Dies gibt mir immer Not set!
aber wenn ich die Zeilen auf Kommentar function readArgs() {
, }
und readArgs
, es funktioniert. Warum? AuchWarum 'getopts' innerhalb einer Funktion nicht funktioniert?
,
input="$OPTARG"
echo "$input"
;;
funktioniert nicht.
Dies ist nur erforderlich, wenn Sie initialisiert
OPTIND
Variable, verlässt sich mehrere Anrufungen sind der Funktion. –Das OP hat den Container der Funktion nicht beschrieben. Ich verwende diese Methoden für Funktionen, die ich schreibe in meinem .bashrc –
Obwohl diese Antwort die OPs Frage nicht direkt beantwortet, es kommt auf eine Suche nach, warum getopts funktioniert nicht in einer Funktion, und war sehr nützlich bei der Fehlersuche in meinem Code (auch für Funktionen in meiner .bashrc) – paulski