Ich habe dieses Skript:
#!/bin/bash
USERS=("user1.com" "user2.co.uk" "user3.com")
PASSES=("pass1" "pass2" "pass3")
for i in ${USERS[@]}; do
echo ${PASSES[i]};
done
Die Ausführung dieses Skripts gibt Folgendes aus:
my-script.sh: Zeile 6: user1.com: Syntaxfehler: ungültiger Arithmetikoperator (Fehlertoken ist „.com“)
Meine Werte sind jedoch in Anführungszeichen gesetzt und es handelt sich meines Wissens nach echo
nicht um eine Rechenoperation.
Wenn man keinen PHP-Hintergrund hat, ist das verwirrend. In PHP können wir Folgendes tun:
echo gettype($string);
echo gettype($int);
welche Ausgänge
Zeichenfolge
Ganzzahl
Die Anführungszeichen funktionieren jedoch anscheinend nicht wie erwartet. Wie erzwinge ich die Verwendung von Zeichenfolgen, anstatt sie user1.com
als zu behandeln user1
.
com
?
Antwort1
Ihr aktueller Code wird erweitert auf
for i in user1.com user2.co.uk user3.com; do
echo ${PASSES[i]};
done
was natürlich überhaupt keinen Sinn ergibt. Der Indirektionsoperator erzeugt stattdessen eine Liste von Array-Indizes:
bash$ echo "${!USERS[@]}"
0 1 2
Damit können Sie eine Schleife über die einzelnen Indizes ausführen. Fügen wir auch die korrekte Anführungszeichen hinzu.
for i in ${!USERS[@]}; do
echo "${PASSES[i]}"
done
Um die volle Punktzahl zu erhalten, sollten Sie bei Ihren privaten Variablen keine Großbuchstaben verwenden; Variablennamen in Großbuchstaben sind für die Systemverwendung reserviert.