Ich mache ein Bash-Skript und jetzt habe ich einen Variablenaufruf source
und ein Array namens samples
:
source='country'
samples=(US Canada Mexico...)
Da ich die Anzahl der Quellen erweitern möchte (und jede Quelle ihre eigenen Beispiele hat), habe ich versucht, einige Argumente hinzuzufügen, um dies zu tun. Ich habe es versucht:
source=""
samples=("")
if [ $1="country" ]; then
source="country"
samples="US Canada Mexico..."
else
echo "try again"
fi
Aber als ich mein Skript source countries.sh country
ausführte, funktionierte es nicht. Was mache ich falsch?
$1="country"
vs.$1 = "country"
Antworten:
Räume nicht vergessen:
quelle
samples="US Canada Mexico..."
nach der Einführung der Array-Erstellung zuvorsamples=(US Canada Mexico...)
?if [ "$1" = "country" ]; then
.Sie können entweder "=" oder "==" Operatoren für den Zeichenfolgenvergleich in bash verwenden. Der wichtige Faktor ist der Abstand innerhalb der Klammern. Die richtige Methode besteht darin, dass Klammern Abstände enthalten und Operatoren Abstände enthalten. In einigen Fällen funktionieren verschiedene Kombinationen. Das Folgende soll jedoch ein universelles Beispiel sein.
Beachten Sie auch, dass doppelte Klammern etwas anders behandelt werden als einfache Klammern ...
Ich hoffe das hilft!
quelle
Es scheint, dass Sie versuchen, Befehlszeilenargumente in Ihr Bash-Skript zu analysieren. Ich habe kürzlich selbst danach gesucht. Ich bin auf Folgendes gestoßen, von dem ich denke, dass es Ihnen beim Analysieren der Argumente helfen wird:
http://rsalveti.wordpress.com/2007/04/03/bash-parsing-arguments-with-getopts/
Ich fügte den Ausschnitt unten als tl hinzu; dr
./script.sh -t Test -r Server -p Passwort -v
quelle