Wie erzwingt man den Zeichenfolgentyp für eine Variable?

Wie erzwingt man den Zeichenfolgentyp für eine Variable?

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 echonicht 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.comals 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.

verwandte Informationen