Ich möchte, dass mein Skript eine optionale Eingabe annehmen kann,
z.B. lautet mein Skript derzeit
#!/bin/bash
somecommand foo
aber ich möchte, dass es heißt:
#!/bin/bash
somecommand [ if $1 exists, $1, else, foo ]
Ich möchte, dass mein Skript eine optionale Eingabe annehmen kann,
z.B. lautet mein Skript derzeit
#!/bin/bash
somecommand foo
aber ich möchte, dass es heißt:
#!/bin/bash
somecommand [ if $1 exists, $1, else, foo ]
Sie können die Syntax für Standardwerte verwenden:
somecommand ${1:-foo}
Der oben beschriebene Wille, wie er in Bash Referenzhandbuch - 3.5.3 Erweiterung der Shell-Parameter [Hervorhebung von mir]:
Wenn der Parameter nicht gesetzt ist oder Null wird die Erweiterung des Wortes ersetzt. Andernfalls wird der Wert des Parameters ersetzt.
Wenn Sie nur einen Standardwert ersetzen wollen, wenn der Parameter nicht gesetzt ist (aber nicht, wenn er null ist, z.B. nicht, wenn er eine leere Zeichenfolge ist), verwenden Sie stattdessen diese Syntax:
somecommand ${1-foo}
Wieder von Bash Referenzhandbuch - 3.5.3 Erweiterung der Shell-Parameter :
Wenn Sie den Doppelpunkt weglassen, wird nur auf einen nicht gesetzten Parameter geprüft. Anders ausgedrückt: Wenn der Doppelpunkt enthalten ist, prüft der Operator sowohl auf die Existenz des Parameters als auch darauf, dass sein Wert nicht null ist; wenn der Doppelpunkt weggelassen wird, prüft der Operator nur auf die Existenz.
Sie können einen Standardwert für eine Variable wie folgt festlegen:
#!/usr/bin/env bash
ARG1=${1:-foo}
ARG2=${2:-'bar is'}
ARG3=${3:-1}
ARG4=${4:-$(date)}
echo "$ARG1"
echo "$ARG2"
echo "$ARG3"
echo "$ARG4"
Hier sind einige Beispiele dafür, wie dies funktioniert:
$ ./somecommand.sh
foo
bar is
1
Thu 19 May 2022 06:58:52 ADT
$ ./somecommand.sh ez
ez
bar is
1
Thu 19 May 2022 06:58:52 ADT
$ ./somecommand.sh able was i
able
was
i
Thu 19 May 2022 06:58:52 ADT
$ ./somecommand.sh "able was i"
able was i
bar is
1
Thu 19 May 2022 06:58:52 ADT
$ ./somecommand.sh "able was i" super
able was i
super
1
Thu 19 May 2022 06:58:52 ADT
$ ./somecommand.sh "" "super duper"
foo
super duper
1
Thu 19 May 2022 06:58:52 ADT
$ ./somecommand.sh "" "super duper" hi you
foo
super duper
hi
you
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.