Estoy tratando de recopilar valores de cadena en un script bash. ¿Cuál es la manera más simple de que pueda adjuntar valores de cadena a una lista o estructura de matriz de manera que pueda mostrarlos al final?¿Lista mutable o estructura de matriz en Bash? ¿Cómo puedo anexarlo fácilmente?
Respuesta
$ arr=(1 2 3)
$ arr+=(4)
$ echo ${arr[@]}
1 2 3 4
Dado que Bash usa matrices dispersas, no debe usar el recuento de elementos ${#arr}
como índice. Sin embargo, puede obtener una gran variedad de índices de la siguiente manera:
$ indices=(${!arr[@]})
foo=(a b c)
foo=("${foo[@]}" d)
for i in "${foo[@]}"; do echo "$i" ; done
La sintaxis bastante oscura para anexar al final de una matriz en bash es:
myarr[${#myarr[*]}]=”$newitem”
Como la respuesta de Dennis Williamson señala, esto es incorrecto en algunos casos; Los arreglos bash son escasos, y el índice $ {# myarr [*]} puede no ser el último índice. –
que añadir a lo que Ignacio ha sugerido en otra respuesta:
foo=(a b c)
foo=("${foo[@]}" d) # push element 'd'
foo[${#foo[*]}]="e" # push element 'e'
for i in "${foo[@]}"; do echo "$i" ; done
$ for i in "string1" "string2" "string3"
> do
> array+=($i)
> done
$ echo ${array[@]}
string1 string2 string3
Aunque la pregunta se responde y es bastante viejo, me gustaría compartir una solución de espacio de nombres, ya que funciona mucho más rápido que cualquier otro formas, excepto por la respuesta de ennukiller (en mis pruebas de 100k líneas, ganó ~ 12 segundos contra mi ~ 14 segundos, mientras que la solución para agregar listas tardaría unos minutos).
Usted puede utilizar el siguiente truco:
# WORKS FASTER THAN THESE LAME LISTS! ! !
size=0;while IFS= read -r line; do
echo $line
((++size))
eval "SWAMP_$size='$line'"
done
o se puede hacer lo siguiente:
#!/bin/bash
size=0
namespace="SWAMP"
ArrayAppend() {
namespace="$1"
# suppose array size is global
new_value="$2"
eval "${namespace}_$size='$2'"
eval "echo \$${namespace}_$size"
((++size))
}
ArrayAppend "$namespace" "$RANDOM"
ArrayAppend "$namespace" "$RANDOM"
ArrayAppend "$namespace" "$RANDOM"
ArrayAppend "$namespace" "$RANDOM"
ArrayAppend "$namespace" "$RANDOM"
Mientras el intérprete se encuentra en la lista de etiquetas, aquí hay un enlace para object oriented bash.
¡No use 'eval' para la asignación (especialmente en la entrada del usuario)! ** su código está sujeto a la inyección de código y es altamente inseguro ** (¡y por lo tanto está roto)! así que ... es incluso más lamer que las listas cojas ':)'. –
Por cierto, si su único objetivo es sorber su archivo línea por línea en una matriz, con Bash≥4 debe usar 'mapfile':' mapfile -t lines
Aunque, si me preguntas, puedo mostrarte una forma muy poco conocida de usar 'eval' de forma segura ... –
- 1. Cómo crear unboxed instancia de matriz mutable
- 2. matriz mutable vacía
- 3. ¿Cómo visualizar fácilmente una matriz?
- 4. Gran matriz de bytes mutable en Erlang
- 5. ¿Cómo puedo eliminar fácilmente la última coma de una matriz?
- 6. Sin lista mutable de Scala
- 7. Cómo inicializar una matriz mutable vacía en el Objetivo C
- 8. ¿Cómo agregar números en una matriz mutable en iphone?
- 9. Clase mutable o inmutable?
- 10. ¿Cómo creo una matriz mutable de longitud fija de objetos de Python en Cython?
- 11. ¿Cómo truncar fácilmente una matriz con JavaScript?
- 12. ¿jQuery tiene una estructura de datos mutable de tipo hashtable?
- 13. Poblando NSTableview desde una matriz mutable
- 14. ¿Cómo puedo multiplicar cada elemento en una matriz fácilmente con PHP?
- 15. Ordenando matriz mutable por clave de diccionario
- 16. Intersección de matriz en bash
- 17. ¿Cómo inicializar una matriz de estructura en C++?
- 18. NSUserDefaults está devolviendo una matriz mutable
- 19. ¿Convertir una matriz a un conjunto mutable en Scala?
- 20. Matriz en Bash no encontrada
- 21. Operador de matriz en bash
- 22. ¿Cómo puedo crear una matriz/lista de diccionarios en python?
- 23. ¿Cómo puedo comparar el código C fácilmente?
- 24. ¿Cómo puedo pasar una matriz de const o una matriz variable a una función en C?
- 25. Cómo cortar una matriz en bash
- 26. Cómo convertir Rango a Lista o Matriz en Scala
- 27. Observación Cambios en una matriz mutable usando KVO contra NSNotificationCenter
- 28. matriz Django o lista de salida?
- 29. Lista de Javascript como estructura de datos?
- 30. cadena con estructura de matriz a matriz
Gracias! Parece mucho más simple que algunos códigos que he visto ... – Joe