Ich muss von einer Zeichenfolge zu einem Array wechseln, in dem jeder Eintrag jedes Wort in dieser Zeichenfolge ist. Beginnen Sie zum Beispiel mit:
VotePedro="Vote for Pedro"
Ich brauche das Array:
Vote
For
Pedro
Was ich dann wiederholen sollte als:
for i in "${votePedroArray[@]}"
do
## Do something
done
bash
shell-script
string
array
farid99
quelle
quelle
votePedroArray=("Vote" "For" "Pedro")
würde Ihnen ein Array der Länge 3 geben. Und${VotePedro}
ist das gleiche wie$VotePedro
in diesem Zusammenhang. Um auf einzelne Array-Elemente zuzugreifen, können Sie Klammern verwenden, die denen für die for-Schleife in Ihrer Frage ähneln. zB${votePedroArray[0]}
ist das erste Element im Array ("Abstimmung" für dieses Beispiel)Wenn Sie eine variable Erweiterung nicht in Anführungszeichen setzen, werden beispielsweise
$VotePedro
die folgenden Schritte ausgeführt:IFS
Variablen. Standardmäßig sind dies Leerzeichen, Tabulatoren und Zeilenumbrüche.Auf diese Weise können Sie eine Zeichenfolge in durch Leerzeichen getrennte Elemente aufteilen (wobei der Standardwert von angenommen wird
IFS
), indem Sie die Platzhaltererweiterung deaktivieren und eine Variable erweitern, deren Wert diese Zeichenfolge außerhalb von Anführungszeichen ist.Sie können die Aufteilung direkt am Verwendungsort durchführen. Dies würde sogar in Shells wie sh funktionieren, die keine Arrays haben:
quelle
Außerdem ist es brechen auf
$IFS
, können Sie auch brechen sie nur auf , was Sie wollen:... was sogar durch Leerzeichen getrennte Nullfelder ermöglichen würde.
quelle