{"id":31286,"date":"2026-04-29T14:31:00","date_gmt":"2026-04-29T12:31:00","guid":{"rendered":"https:\/\/contabo.com\/blog\/guia-de-arreglos-bash-indexados-asociativos-bucles\/"},"modified":"2026-06-10T14:48:16","modified_gmt":"2026-06-10T12:48:16","slug":"guia-de-arreglos-bash","status":"publish","type":"post","link":"https:\/\/contabo.com\/blog\/es\/guia-de-arreglos-bash\/","title":{"rendered":"Gu\u00eda de arrays en Bash: Indexados, Asociativos y Bucles"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"630\" src=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_bash-array-guide-indexed-associative-loops_ES.webp\" alt=\"Gu\u00eda de arrays en Bash: Indexados, Asociativos y Bucles\" class=\"wp-image-30519\" srcset=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_bash-array-guide-indexed-associative-loops_ES.webp 1200w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_bash-array-guide-indexed-associative-loops_ES-600x315.webp 600w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_bash-array-guide-indexed-associative-loops_ES-768x403.webp 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n\n\n<p>Los arreglos Bash son una de esas caracter\u00edsticas que parecen intimidantes hasta que los usas una vez. Despu\u00e9s de eso, te encontrar\u00e1s us\u00e1ndolos constantemente al escribir scripts que identifican listas de valores.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-que-es-un-arreglo-bash\">\u00bfQu\u00e9 es un arreglo Bash?<\/h2>\n\n\n\n<p>Un arreglo bash es una variable que contiene m\u00faltiples valores. En lugar de declarar variables separadas para cada elemento de una lista, las pones en un arreglo y las referencias por \u00edndice o clave. Bash no se preocupa de si los elementos son cadenas o n\u00fameros, y no impone tipos consistentes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-arreglos-indexados-vs-arreglos-asociativos\">Arreglos Indexados vs Arreglos Asociativos<\/h3>\n\n\n\n<p>Los arreglos indexados usan enteros como claves, comenzando desde 0. Son el valor predeterminado y se comportan como arreglos en casi todos los dem\u00e1s lenguajes. Los arreglos asociativos usan cadenas como claves, ofreci\u00e9ndote funcionalidad de par clave-valor similar a mapas hash o diccionarios. Los arreglos asociativos requieren declaraci\u00f3n expl\u00edcita con declare -A.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-cuando-usar-arreglos-en-scripts-bash\">Cu\u00e1ndo usar arreglos en scripts Bash<\/h3>\n\n\n\n<p>Usa arreglos cuando est\u00e9s iterando sobre una lista de servidores, archivos, nombres de usuario o cualquier colecci\u00f3n de elementos. Sin arreglos, terminas con m\u00faltiples variables (servidor1, servidor2, servidor3) y l\u00f3gica condicional que duplica c\u00f3digo. Con un arreglo, un bucle maneja toda la lista.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-como-declarar-un-arreglo-bash\">C\u00f3mo declarar un arreglo Bash<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-declarando-un-arreglo-indexado\">Declarando un arreglo indexado<\/h3>\n\n\n\n<p>Tres maneras de declarar un arreglo indexado:<\/p>\n\n\n\n<p>Todo de una vez:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fruits=(\"apple\" \"banana\" \"cherry\")<\/code><\/pre>\n\n\n\n<p>Uno por uno:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fruits&#91;0]=\"apple\" fruits&#91;1]=\"banana\" fruits&#91;2]=\"cherry\"<\/code><\/pre>\n\n\n\n<p>Usando declare:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>declare -a fruits=(\"apple\" \"banana\" \"cherry\")<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-declarando-un-arreglo-asociativo\">Declarando un arreglo asociativo<\/h3>\n\n\n\n<p>Los arreglos asociativos requieren la directiva declare -A:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>declare -A servers servers&#91;web]=\"192.168.1.10\" servers&#91;db]=\"192.168.1.20\" servers&#91;cache]=\"192.168.1.30\"<\/code><\/pre>\n\n\n\n<p>O en l\u00ednea:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>declare -A servers=(&#91;web]=\"192.168.1.10\" &#91;db]=\"192.168.1.20\")<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-como-agregar-variables-a-un-arreglo-bash\">C\u00f3mo agregar variables a un arreglo Bash<\/h2>\n\n\n\n<p>Para arreglos indexados, ap\u00e9ndelo usando el operador +=:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fruits+=(\"date\" \"elderberry\")<\/code><\/pre>\n\n\n\n<p>Asigna a un \u00edndice espec\u00edfico:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>fruits&#91;5]=\"fig\"<\/code><\/pre>\n\n\n\n<p>Nota: los arreglos bash son dispersos. Asignar al \u00edndice 5 cuando solo tienes 3 elementos deja los \u00edndices 3 y 4 sin asignar, no vac\u00edos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-referenciando-e-imprimiendo-elementos-de-un-arreglo\">Referenciando e imprimiendo elementos de un arreglo<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-acceder-a-un-solo-elemento\">Acceder a un solo elemento<\/h3>\n\n\n\n<p>Usa la sintaxis de llaves con el \u00edndice:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo ${fruits&#91;0]}<\/code><\/pre>\n\n\n\n<p>Para arreglos asociativos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo ${servers&#91;web]}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-imprimir-todo-el-arreglo\">Imprimir todo el arreglo<\/h3>\n\n\n\n<p>El s\u00edmbolo @ expande todos los elementos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo ${fruits&#91;@]}<\/code><\/pre>\n\n\n\n<p>Para ver todas las claves:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo ${!fruits&#91;@]}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-obtener-la-longitud-del-arreglo\">Obtener la longitud del arreglo<\/h3>\n\n\n\n<p>Prefija con # para obtener la longitud del arreglo bash:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo ${#fruits&#91;@]}<\/code><\/pre>\n\n\n\n<p>Para obtener la longitud de cadena de un elemento espec\u00edfico:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo ${#fruits&#91;0]}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-como-eliminar-elementos-de-un-arreglo-bash\">C\u00f3mo eliminar elementos de un arreglo Bash<\/h2>\n\n\n\n<p>Usa unset para eliminar un elemento espec\u00edfico:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>unset fruits&#91;1]<\/code><\/pre>\n\n\n\n<p>Esto elimina el elemento pero deja el hueco del \u00edndice. La longitud del arreglo disminuye en uno. Para eliminar todo el arreglo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>unset fruits<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-como-recorrer-un-arreglo-bash\">C\u00f3mo recorrer un arreglo Bash<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-bucle-con-for-in\">Bucle con For-In<\/h3>\n\n\n\n<p>La forma est\u00e1ndar de iterar sobre los valores del arreglo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for fruit in \"${fruits&#91;@]}\"; do &nbsp; &nbsp; echo \"$fruit\" done<\/code><\/pre>\n\n\n\n<p>Las comillas alrededor de ${fruits[@]} manejan correctamente los elementos con espacios. Sin ellas, un elemento como &#8216;fruta de la pasi\u00f3n&#8217; se divide en dos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-bucle-con-indice\">Bucle con \u00edndice<\/h3>\n\n\n\n<p>Cuando necesitas el \u00edndice junto con el valor:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>for i in \"${!fruits&#91;@]}\"; do &nbsp; &nbsp; echo \"Index $i: ${fruits&#91;$i]}\" done<\/code><\/pre>\n\n\n\n<p>El prefijo ! expande los \u00edndices del arreglo en lugar de sus valores.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-pasando-un-arreglo-bash-a-una-funcion\">Pasando un arreglo Bash a una funci\u00f3n<\/h2>\n\n\n\n<p>Bash no pasa arreglos a funciones de forma nativa. La soluci\u00f3n alternativa: pasa el nombre del arreglo y usa expansi\u00f3n indirecta dentro de la funci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function process_array { &nbsp; &nbsp; local -n arr=$1 &nbsp; &nbsp; for item in \"${arr&#91;@]}\"; do &nbsp; &nbsp; &nbsp; &nbsp; echo \"Processing: $item\" &nbsp; &nbsp; done }&nbsp; my_list=(\"file1\" \"file2\" \"file3\") process_array my_list<\/code><\/pre>\n\n\n\n<p>El flag -n en local crea una referencia de nombre. La funci\u00f3n opera sobre el arreglo original sin copiarlo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-faq-arreglo-bash\">FAQ: Arreglo Bash<\/h2>\n\n\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1777034061991\"><strong class=\"schema-faq-question\">\u00bfC\u00f3mo declaro un arreglo en bash?<\/strong> <p class=\"schema-faq-answer\">Para un arreglo indexado: fruits=(\u00abmanzana\u00bb \u00abpl\u00e1tano\u00bb \u00abcereza\u00bb) Para un arreglo asociativo: declare -A servers=([web]=\u00bb192.168.1.10&#8243; [db]=\u00bb192.168.1.20&#8243;)<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1777034070802\"><strong class=\"schema-faq-question\">\u00bfC\u00f3mo recorro un arreglo bash?<\/strong> <p class=\"schema-faq-answer\">Usa for-in: for item in \u00ab${array[@]}\u00bb; do echo \u00ab$item\u00bb; done. Siempre coloca comillas en \u00ab${array[@]}\u00bb para identificar elementos que contienen espacios.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1777034079268\"><strong class=\"schema-faq-question\">\u00bfC\u00f3mo obtengo la longitud de un arreglo bash?<\/strong> <p class=\"schema-faq-answer\">Usa ${#array[@]}. Ejemplo: count=${#fruits[@]}. Esto da el n\u00famero de elementos en el arreglo.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1777034086608\"><strong class=\"schema-faq-question\">\u00bfQu\u00e9 es un arreglo asociativo bash?<\/strong> <p class=\"schema-faq-answer\">Un arreglo asociativo usa claves de cadena en lugar de \u00edndices enteros. Decl\u00e1ralo con declare -A: declare -A config=([host]=\u00bblocalhost\u00bb [port]=\u00bb3306&#8243;). Accede a los valores con ${config[host]}.<\/p> <\/div> <\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los arreglos Bash son una de esas caracter\u00edsticas que parecen intimidantes hasta que los usas una vez. Despu\u00e9s de eso, te encontrar\u00e1s us\u00e1ndolos constantemente al escribir scripts que identifican listas de valores. \u00bfQu\u00e9 es un arreglo Bash? Un arreglo bash es una variable que contiene m\u00faltiples valores. En lugar de declarar variables separadas para cada [&hellip;]<\/p>\n","protected":false},"author":44,"featured_media":30519,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1988],"tags":[],"ppma_author":[3402],"class_list":["post-31286","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriales"],"uagb_featured_image_src":{"full":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_bash-array-guide-indexed-associative-loops_ES.webp",1200,630,false],"thumbnail":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_bash-array-guide-indexed-associative-loops_ES-150x150.webp",150,150,true],"medium":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_bash-array-guide-indexed-associative-loops_ES-600x315.webp",600,315,true],"medium_large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_bash-array-guide-indexed-associative-loops_ES-768x403.webp",768,403,true],"large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_bash-array-guide-indexed-associative-loops_ES.webp",1200,630,false],"1536x1536":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_bash-array-guide-indexed-associative-loops_ES.webp",1200,630,false],"2048x2048":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/05\/blog-head_bash-array-guide-indexed-associative-loops_ES.webp",1200,630,false]},"uagb_author_info":{"display_name":"Milan Ivanovic","author_link":"https:\/\/contabo.com\/blog\/es\/author\/milan\/"},"uagb_comment_info":0,"uagb_excerpt":"Los arreglos Bash son una de esas caracter\u00edsticas que parecen intimidantes hasta que los usas una vez. Despu\u00e9s de eso, te encontrar\u00e1s us\u00e1ndolos constantemente al escribir scripts que identifican listas de valores. \u00bfQu\u00e9 es un arreglo Bash? Un arreglo bash es una variable que contiene m\u00faltiples valores. En lugar de declarar variables separadas para cada&hellip;","authors":[{"term_id":3402,"user_id":0,"is_guest":1,"slug":"contabro","display_name":"ContaBro","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","author_category":"","user_url":"","last_name":"","first_name":"","job_title":"","description":""}],"_links":{"self":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts\/31286","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/users\/44"}],"replies":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=31286"}],"version-history":[{"count":2,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts\/31286\/revisions"}],"predecessor-version":[{"id":31291,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts\/31286\/revisions\/31291"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/media\/30519"}],"wp:attachment":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=31286"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=31286"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=31286"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=31286"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}