Cuando deja una expansión variable sin comillas, por ejemplo $VotePedro
, se realizan los siguientes pasos:
- Busque el valor de la variable.
- Divida el valor en cada bloque de espacios en blanco en una lista de cadenas. Más generalmente, los separadores son los caracteres en el valor de la
IFS
variable; por defecto, espacio, tabulación y nueva línea.
- Interprete cada elemento de la lista como un patrón comodín; para cada elemento, si el patrón coincide con algunos archivos, reemplace ese elemento por la lista de nombres de archivo coincidentes.
Por lo tanto, puede dividir una cadena en elementos delimitados por espacios en blanco (asumiendo el valor predeterminado de IFS
) desactivando la expansión de comodines y expandiendo una variable cuyo valor es esa cadena fuera de las comillas.
VotePedro="Vote for Pedro"
set -f
votePedroArray=($VotePedro)
set +f
for i in "${votePedroArray[@]}"; do …
Puede hacer la división directamente en el punto de uso; esto funcionaría incluso en shells como sh que no tienen matrices:
VotePedro="Vote for Pedro"
set -f
for i in ${votePedro}; do
set +f
…
done
set +f
Gilles 'SO- deja de ser malvado'
fuente
votePedroArray=("Vote" "For" "Pedro")
le daría una matriz de longitud 3. Y${VotePedro}
es lo mismo que$VotePedro
en este contexto. Para acceder a elementos de matriz individuales, puede usar paréntesis similares a los que tenía para el bucle for en su pregunta. por ejemplo,${votePedroArray[0]}
es el primer elemento en la matriz ("Voto" para este ejemplo)