Necesito ir de una cadena a una matriz donde cada entrada es cada palabra en esa cadena. Por ejemplo, comenzando con:
VotePedro="Vote for Pedro"
Necesito la matriz:
Vote
For
Pedro
Lo que debería poder repetir como:
for i in "${votePedroArray[@]}"
do
## Do something
done
bash
shell-script
string
array
farid99
fuente
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)Cuando deja una expansión variable sin comillas, por ejemplo
$VotePedro
, se realizan los siguientes pasos:IFS
variable; por defecto, espacio, tabulación y nueva línea.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.Puede hacer la división directamente en el punto de uso; esto funcionaría incluso en shells como sh que no tienen matrices:
fuente
Además de romperlo
$IFS
, también puedes romperlo en lo que quieras:... que permitiría espacios en blanco separados por campos nulos, incluso.
fuente