{"id":9057,"date":"2019-08-22T19:52:14","date_gmt":"2019-08-22T19:52:14","guid":{"rendered":"https:\/\/blog.hostinger.io\/es-tutoriales\/?p=9057"},"modified":"2025-12-18T22:35:58","modified_gmt":"2025-12-18T21:35:58","slug":"bash-script-linux","status":"publish","type":"post","link":"\/es\/tutoriales\/bash-script-linux","title":{"rendered":"Bash Script: qu\u00e9 es, c\u00f3mo escribir uno y ejemplos"},"content":{"rendered":"<p>Si alguna vez has utilizado un sistema operativo Linux, como la mayor&iacute;a de los <a href=\"\/es\/servidor-vps\">VPS<\/a> (servidores privados virtuales), es posible que hayas o&iacute;do hablar de bash. Este es un int&eacute;rprete Unix que lee y ejecuta varios comandos.<\/p><p>Cuando necesites ejecutar varios comandos bash, no tienes que ejecutarlos manualmente de uno en uno. En su lugar, es posible crear un archivo de script que contenga funciones bash para ejecutar esos comandos.<\/p><p>Puede parecer complicado, pero aprendiendo sus fundamentos, entender&aacute;s el lenguaje de script bash y descubrir&aacute;s c&oacute;mo puede ayudarte en tu flujo de trabajo.<\/p><p>Este art&iacute;culo cubrir&aacute; el proceso de script bash. Repasaremos todo, desde los comandos bash, hasta la ejecuci&oacute;n de un programa bash en un terminal Linux.<\/p><p><strong>Breve descripci&oacute;n de Bash Scripting:<\/strong><\/p><figure tabindex=\"0\" class=\"wp-block-table\"><table><tbody><tr><td><strong>Conocimientos necesarios<\/strong><\/td><td>Conocimientos b&aacute;sicos de Linux, uso de la l&iacute;nea de comandos.<\/td><\/tr><tr><td><strong>Privilegios requeridos<\/strong><\/td><td>Privilegios de usuario, root para determinadas operaciones.<\/td><\/tr><tr><td><strong>Dificultad<\/strong><\/td><td>De principiante a intermedio.<\/td><\/tr><tr><td><strong>Objetivo principal<\/strong><\/td><td>Introducci&oacute;n a las secuencias de comandos Bash, comandos b&aacute;sicos, ejemplos de secuencias de comandos.<\/td><\/tr><tr><td><strong>Compatibilidad con el SO<\/strong><\/td><td>Cualquier sistema basado en Linux.<\/td><\/tr><\/tbody><\/table><\/figure><figure class=\"wp-block-image size-large\"><a href=\"https:\/\/assets.hostinger.com\/content\/tutorials\/pdf\/Linux-Commands-Cheatsheet-ES.pdf\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" width=\"1024\" height=\"283\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/Linux-cheat-sheet-ES.png\/public\" alt=\"\" class=\"wp-image-26004\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/Linux-cheat-sheet-ES.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/Linux-cheat-sheet-ES.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/Linux-cheat-sheet-ES.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/Linux-cheat-sheet-ES.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2022\/12\/Linux-cheat-sheet-ES.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-que-es-bash\">&iquest;Qu&eacute; es Bash?<\/h2><p>Bash (<strong>Bourne-Again Shell)<\/strong> es un int&eacute;rprete de comandos de Unix. Este lee los comandos del shell e interact&uacute;a con el sistema operativo para ejecutarlos.<\/p><p>Para entender completamente el scripting shell bash, necesitas conocer dos conceptos: <strong>shell <\/strong>y <strong>scripting<\/strong>.<\/p><p>Shell es un macroprocesador que utiliza comandos para interactuar con el sistema operativo. Esto significa que puede recuperar, procesar y almacenar informaci&oacute;n en un ordenador.<\/p><p>Por su parte, el scripting es el proceso de compilar comandos del shell en un nuevo archivo utilizando un editor de texto.<\/p><p>Cuando escribes bash en un editor de texto, est&aacute;s compilando <strong>comandos bash <\/strong>o <strong>funciones bash, <\/strong>los cuales son un conjunto de comandos que pueden ser llamados numerosas veces tan solo usando el nombre de la funci&oacute;n. El texto se guarda entonces como un archivo de<strong> script bash <\/strong>ejecutable con la extensi&oacute;n <strong>.sh<\/strong>.&nbsp;<\/p><figure class=\"wp-block-image size-large\"><a href=\"\/es\/servidor-vps\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-29287\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-por-que-usar-bash-script\">&iquest;Por qu&eacute; usar Bash Script?<\/h2><p>Los scripts Bash pueden ayudarte con tu flujo de trabajo, ya que compilan muchos comandos largos en un &uacute;nico archivo de script ejecutable.<\/p><p>Por ejemplo, si tienes m&uacute;ltiples comandos que tienes que ejecutar en un intervalo de tiempo espec&iacute;fico, puedes compilar un script bash, en lugar de escribir y ejecutar los comandos manualmente uno por uno. S&oacute;lo tendr&aacute;s que ejecutar el archivo de script cuando sea necesario.<\/p><p>Aqu&iacute; otras ventajas de utilizar scripts bash:<\/p><ul class=\"wp-block-list\">\n<li><strong>Comandos bien estructurados. <\/strong>Estructura los comandos en una secuencia para que cada vez que ejecutes el script, se ejecute en el orden correcto.<\/li>\n\n\n\n<li><strong>Automatizaci&oacute;n de tareas<\/strong>. Automatiza la ejecuci&oacute;n de secuencias de comandos en cualquier momento definido mediante el programador <a href=\"\/es\/tutoriales\/cron-job\">cron<\/a> basado en el tiempo.<\/li>\n\n\n\n<li><strong>Transparencia. <\/strong>La gente puede comprobar el contenido de un script ya que est&aacute; en un archivo de texto legible. Sin embargo, si ejecutas los comandos utilizando otro programa escrito en un lenguaje de programaci&oacute;n diferente, como C++, tendr&aacute;s que acceder al c&oacute;digo fuente.<\/li>\n\n\n\n<li><strong>Transferible<\/strong>. Si transfieres un script a otras distribuciones de Linux, seguir&aacute; funcionando, siempre que los comandos del shell est&eacute;n disponibles en ese sistema operativo espec&iacute;fico.<\/li>\n<\/ul><p>\n\n\n\n<div class=\"protip\">\n                    <h4 class=\"title\">Consejo profesional<\/h4>\n                    <p>Linux tiene un manual de comandos de shell bash. Este contiene descripciones de todos los t&eacute;rminos t&eacute;cnicos y variables est&aacute;ndar del shell. Escribe y ejecuta el comando <strong>man <\/strong>bash para mostrar el manual en el terminal.<\/p>\n                <\/div>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-comandos-bash\">Comandos Bash<\/h2><p>Bash est&aacute; disponible en casi todos los tipos de sistemas operativos basados en Unix y no requiere una instalaci&oacute;n independiente. Necesitar&aacute;s una l&iacute;nea de comandos Linux, tambi&eacute;n conocida como terminal Linux. Este es un programa que contiene el shell y te permite ejecutar scripts bash.&nbsp;<\/p><p>Utiliza este comando para comprobar la lista de shells disponibles en tu sistema operativo Unix:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cat \/etc\/shells<\/pre><p>La salida deber&iacute;a mostrar una lista como &eacute;sta:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/bin\/bash\n\/bin\/sh\n\/bin\/tcsh\n\/bin\/csh<\/pre><p>Cada script de shell Bash debe comenzar con <strong>#! <\/strong>seguido de la ruta absoluta al int&eacute;rprete bash. Para ver la ruta, introduce este comando:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">which bash<\/pre><p>Deber&iacute;a producir el siguiente resultado:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/bin\/bash<\/pre><p>Esta es la ruta est&aacute;ndar al int&eacute;rprete bash en la mayor&iacute;a de los sistemas operativos Unix. Para que el shell sepa que debe ejecutar comandos utilizando el int&eacute;rprete bash, inicia el script con esta l&iacute;nea:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash<\/pre><p>\n\n\n\n<div><p class=\"important\"><strong>&iexcl;Importante!<\/strong> Si deseas ejecutar scripts bash en un servidor privado virtual, con&eacute;ctate a &eacute;l a trav&eacute;s de un cliente SSH.<\/p><\/div>\n\n\n\n<\/p><p>El siguiente paso es escribir y compilar los comandos en un archivo <strong>.sh <\/strong>utilizando un editor de texto. Necesitar&aacute;s un editor de texto Unix como <a href=\"https:\/\/www.vim.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">VIM<\/a> o <a href=\"https:\/\/www.nano-editor.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">GNU Nano<\/a>. En este tutorial, usaremos el editor de texto <strong>Nano <\/strong>para crear el archivo introduciendo este comando:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">nano function.sh<\/pre><p>Esto abrir&aacute; un nuevo archivo <strong>.sh <\/strong>para que lo<strong> <\/strong>edites. Comienza escribiendo <strong>#!\/bin\/bash <\/strong>seguido de los comandos bash.<\/p><p>\n\n\n\n<div><p class=\"important\"><strong>&iexcl;Importante! <\/strong>Cuando hayas<strong> <\/strong>terminado de utilizar el editor de texto Nano, pulsa <strong>Ctrl+X <\/strong>para cerrarlo y, a continuaci&oacute;n, pulsa <strong>Y <\/strong>e <strong>Intro <\/strong>para guardar los cambios.<\/p><\/div>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-comandos-bash-basicos-para-tu-primer-script-bash\">Comandos Bash b&aacute;sicos para tu primer script bash<\/h2><p>Para crear con &eacute;xito tu primer bash script, necesitas entender los comandos bash esenciales. Estos son los elementos principales de un script y debes saber lo que hacen y c&oacute;mo escribirlos correctamente.<\/p><p>Hay muchos comandos bash en Linux. Para empezar, vamos a cubrir siete b&aacute;sicos.<\/p><h3 class=\"wp-block-heading\" id=\"h-1-comentarios\">1. Comentarios<\/h3><p>Los comentarios ofrecen una descripci&oacute;n de determinadas l&iacute;neas del script. El terminal no analiza los comentarios durante la ejecuci&oacute;n, por lo que no afectar&aacute;n a la salida.<\/p><p>Hay dos formas de a&ntilde;adir comentarios a un script. El primer m&eacute;todo consiste en escribir <strong># <\/strong>al principio de un comentario de una sola l&iacute;nea.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n#Command below prints a Hola mundo text\necho &ldquo;&iexcl;Hola, mundo!&rdquo;<\/pre><p>El segundo m&eacute;todo consiste en utilizar <strong>: <\/strong>seguido de <strong>&lsquo;<\/strong>. Este m&eacute;todo funciona para comentarios de varias l&iacute;neas.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\nread a\n: &lsquo;&nbsp;\nThe following commands prints\n&iexcl;Hola, mundo!\n&lsquo;\necho &ldquo;&iexcl;Hola, mundo!&rdquo;<\/pre><h3 class=\"wp-block-heading\" id=\"h-2-variables\">2. Variables<\/h3><p>Las variables son s&iacute;mbolos que representan un car&aacute;cter, cadenas de caracteres o n&uacute;meros. Basta con escribir el nombre de la variable en una l&iacute;nea de &oacute;rdenes para utilizar las cadenas o n&uacute;meros definidos.<\/p><p>Para asignar una variable, escribe el nombre de la variable y el valor de la cadena como aqu&iacute;:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">testvar=\"Esta es una variable de prueba\"<\/pre><p>En este caso, <strong>testvar <\/strong>es el nombre de la variable, y <strong>Esta es una variable de prueba <\/strong>es el valor de la cadena. Al asignar una variable, recomendamos utilizar un nombre de variable que sea f&aacute;cil de recordar y que represente su valor.<\/p><p>Para leer el valor de la variable en la l&iacute;nea de comandos, utiliza el s&iacute;mbolo <strong>$ <\/strong>antes del nombre de la variable. Echa un vistazo al siguiente ejemplo:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\ntestvar=\"Esta es una variable de prueba\"\necho $testvar<\/pre><p>La segunda l&iacute;nea de comando utiliza <strong>echo <\/strong>para imprimir el valor de <strong>testvar<\/strong>. La salida de ese script ser&aacute;:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Esta es una variable de prueba<\/pre><p>Veamos c&oacute;mo introducir un valor de cadena mediante el comando <strong>read <\/strong>y hacer que el script compare dos valores de cadena de variables diferentes:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\necho \"Introduce un n&uacute;mero\"&nbsp;\nread a #The user input in this command line will be stored as variable a\nb=50 #The value of variable b\nif [[$a -eq $b]]\nthen\necho \"Mismo n&uacute;mero\"\nelse\necho \"N&uacute;mero diferente\"\nfi<\/pre><p>La salida de ese script deber&iacute;a ser la siguiente:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Introduce un n&uacute;mero\n20\nN&uacute;mero diferente<\/pre><p>Observa que <strong>la l&iacute;nea 3 <\/strong>es el valor que se convierte en la variable <strong>a<\/strong>.<\/p><p>El script compara la variable <strong>a <\/strong>con el valor <strong>20 <\/strong>y la variable <strong>b <\/strong>con el valor <strong>50<\/strong>. Como los valores son diferentes, el script imprime <strong>N&uacute;mero diferente<\/strong>.<\/p><p>Sin embargo, si el usuario introduce <strong>50<\/strong>, &eacute;sta ser&aacute; la salida:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Introduce un n&uacute;mero\n50\nMismo n&uacute;mero<\/pre><p>Este ejemplo tambi&eacute;n utiliza sentencias condicionales, de las que hablaremos m&aacute;s adelante.<\/p><h3 class=\"wp-block-heading\" id=\"h-3-comando-echo\">3. Comando echo<\/h3><p><strong>echo <\/strong>es un comando muy conocido y utilizado en muchos lenguajes de programaci&oacute;n. Hay varias opciones que puedes utilizar con echo para imprimir la salida en el terminal.<\/p><p>El primer uso de echo, y el m&aacute;s com&uacute;n, es la salida de texto est&aacute;ndar:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\necho \"&iexcl;Hola, mundo!\"<\/pre><p>La salida de ese comando es <strong>&iexcl;Hola, mundo! <\/strong>Por defecto, cuando se utiliza el comando echo de esta forma, el terminal introducir&aacute; una nueva l&iacute;nea debajo. Si quieres utilizar echo para una salida sin una nueva l&iacute;nea, puedes hacerlo usando <strong>-n<\/strong>.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\necho -n \"&iexcl;Hola, mundo!\"<\/pre><p>Utiliza la opci&oacute;n<strong> \\n <\/strong>para introducir un salto de l&iacute;nea en la salida. Para activar la <strong>barra invertida (\\)<\/strong>, debes incluir <strong>-e<\/strong>.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\necho -e \"&iexcl;Hola, \\nmundo!\"<\/pre><p>La salida de ese comando tendr&aacute; el siguiente aspecto:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&iexcl;Hola,\nmundo!<\/pre><p>La opci&oacute;n<strong> \\t <\/strong>a&ntilde;ade un espacio de tabulaci&oacute;n horizontal:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\necho -e \"&iexcl;Hola, mundo!\"<\/pre><p>La salida de este comando mover&aacute; el texto a la derecha:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">                                                                &iexcl;Hola, mundo!<\/pre><p>Tambi&eacute;n puedes combinar varias opciones. Por ejemplo, combina<strong> \\n <\/strong>y<strong> \\t <\/strong>para dividir el texto en l&iacute;neas y ubicarlo a la derecha:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\necho -e &ldquo;\\n\\t&iexcl;Hola, \\n\\tmundo!&rdquo;<\/pre><p>La salida de ese comando tendr&aacute; el siguiente aspecto:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">                                                                      &iexcl;Hola,\n                                                                       mundo!<\/pre><h3 class=\"wp-block-heading\" id=\"h-4-funciones\">4. Funciones<\/h3><p>Una funci&oacute;n compila un conjunto de comandos en un grupo. Si necesitas volver a ejecutar el comando, simplemente escribe la funci&oacute;n en lugar del conjunto completo de comandos.<\/p><p>Hay varias formas de escribir funciones.<\/p><p>La primera forma es empezar con el nombre de la funci&oacute;n y seguirlo con par&eacute;ntesis y corchetes:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function_name () {\nfirst command\nsecond command\n}<\/pre><p>Tambi&eacute;n puedes escribirlo en una sola l&iacute;nea:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function_name () { first command; second command; }<\/pre><p>El segundo m&eacute;todo para escribir una funci&oacute;n es utilizar la palabra reservada <strong>function <\/strong>seguida<strong> <\/strong>del nombre de la funci&oacute;n. Esto elimina la necesidad de par&eacute;ntesis:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function function_name {\nfirst command\nsecond command\n}<\/pre><p>Este m&eacute;todo tambi&eacute;n tiene una versi&oacute;n de una sola l&iacute;nea:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function function_name { first command; second command; }<\/pre><p>Por ejemplo, podemos escribir dos funciones con varios comandos <strong>echo<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\nhola_mundo () {\necho &ldquo;&iexcl;Hola, mundo!&rdquo;\necho &ldquo;Esta es una variable de prueba&rdquo;\n}\nprint_message () {\necho &ldquo;Aprendamos programaci&oacute;n Bash&rdquo;\necho &ldquo;Disfruta este tutorial&rdquo;\n}<\/pre><p>Ten en cuenta que escribir las funciones como en el ejemplo anterior s&oacute;lo las define y no ejecuta los comandos contenidos. Para ejecutar una funci&oacute;n, introduce su nombre en la l&iacute;nea de comandos.<\/p><p>Ahora, usemos los dos ejemplos anteriores en una funci&oacute;n bash completa, incluyendo su ejecuci&oacute;n:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\n#Define a hola mundo function\nhola_mundo () {\necho &ldquo;&iexcl;Hola, mundo!&rdquo;\necho &ldquo;Esta es una variable de prueba&rdquo;\n}\n#Define a print message function\nprint_message () {\necho &ldquo;Aprendamos programaci&oacute;n Bash&rdquo;\necho &ldquo;Disfruta este tutorial&rdquo;\n}\n#Execute the hello world function\nhola_mundo\n#Execute the print message function\nprint_message<\/pre><p>Este es el resultado del script anterior:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&iexcl;Hola, mundo!\nEsta es una variable de prueba\nAprendamos programaci&oacute;n Bash\nDisfruta este tutorial<\/pre><h3 class=\"wp-block-heading\" id=\"h-5-bucles\">5. Bucles<\/h3><p><a href=\"\/es\/tutoriales\/bash-for-loop-guia-ejemplos\">Los comandos bash de bucle<\/a> son &uacute;tiles si deseas ejecutar comandos varias veces. Hay tres tipos de ellos que se pueden ejecutar en bash: <strong>for<\/strong>, <strong>while <\/strong>y <strong>until<\/strong>.<\/p><p>El bucle <strong>for <\/strong>ejecuta el comando para una lista de elementos:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\nfor item in [lista]\ndo\n[comandos]\ndone<\/pre><p>El siguiente ejemplo utiliza un bucle <strong>for <\/strong>para imprimir todos los d&iacute;as de la semana:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\nfor days in Lunes Martes Mi&eacute;rcoles Jueves Viernes S&aacute;bado Domingo\ndo\necho &ldquo;Day: $days&rdquo;\ndone<\/pre><p>En <strong>la l&iacute;nea 2<\/strong>, <strong>&laquo;days&raquo; <\/strong>se<strong> <\/strong>convierte autom&aacute;ticamente en una variable, cuyos valores son los nombres de los siguientes d&iacute;as. Luego, en el comando <strong>echo<\/strong>, utilizamos el s&iacute;mbolo <strong>$ <\/strong>para llamar a los valores de la variable.<\/p><p>La salida de ese script ser&aacute; la siguiente:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Day: Lunes\nDay: Martes\nDay: Mi&eacute;rcoles\nDay: Jueves\nDay: Viernes\nDay: S&aacute;bado\nDay: Domingo<\/pre><p>Observa que incluso con una sola l&iacute;nea de comando en el script de bucle, imprime siete salidas de <strong>echo<\/strong>.<\/p><p>El siguiente tipo de bucle es <strong>while<\/strong>. El script evaluar&aacute; una condici&oacute;n. Si la condici&oacute;n es <strong>verdadera<\/strong>, seguir&aacute; ejecutando los comandos hasta que la salida ya no cumpla la condici&oacute;n definida.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\nwhile [condici&oacute;n]\ndo\n[comandos]\ndone<\/pre><p>Veamos un ejemplo sencillo en el que intervienen una variable y un operador de incremento, denominado <strong>((++))<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\ni=0\nwhile [ $i -le 5 ]\ndo&nbsp;\necho $i\n((i++))\ndone<\/pre><p>La variable comienza con un valor <strong>0 <\/strong>y el operador de incremento la aumentar&aacute; en uno. La condici&oacute;n establecida es menor o igual a cinco, por lo que el comando seguir&aacute; iterando hasta que la salida llegue a cinco. La salida de ese script ser&aacute; la siguiente:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">0\n1\n2\n3\n4\n5<\/pre><p>El &uacute;ltimo tipo de bucle, <strong>until<\/strong>, es el opuesto a <strong>while<\/strong>. Repetir&aacute; el comando hasta que la condici&oacute;n se convierta en verdadera.<\/p><p>Si queremos la misma salida que en el ejemplo <strong>while <\/strong>anterior utilizando el bucle <strong>until<\/strong>, podemos escribir el script de la siguiente manera:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\ni=0\nuntil [ $i -gt 5 ]\ndo&nbsp;\necho $i\n((i++))\ndone<\/pre><p>Ahora, este comando se reproducir&aacute; hasta que el valor de salida llegue a cinco. La salida ser&aacute; la misma que en nuestro ejemplo con el bucle <strong>while<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">0\n1\n2\n3\n4\n5<\/pre><h3 class=\"wp-block-heading\" id=\"h-6-declaraciones-condicionales\">6. Declaraciones condicionales<\/h3><p>Muchos lenguajes de programaci&oacute;n, incluido bash, utilizan sentencias condicionales como <strong>if<\/strong>, <strong>then <\/strong>y <strong>else <\/strong>para la toma de decisiones. Ejecutan comandos e imprimen salidas dependiendo de las condiciones.<\/p><p>La sentencia <strong>if <\/strong>va seguida de<strong> <\/strong>una expresi&oacute;n condicional. Despu&eacute;s, le sigue <strong>then <\/strong>y el comando para definir la salida de la condici&oacute;n. El script ejecutar&aacute; el comando si la condici&oacute;n expresada en la sentencia <strong>if <\/strong>es verdadera.<\/p><p>Sin embargo, si deseas ejecutar un comando diferente si la condici&oacute;n es falsa, a&ntilde;ade una sentencia <strong>else <\/strong>al script y s&iacute;guela con el comando.<\/p><p>Echemos un vistazo a las sentencias <strong>if<\/strong>, <strong>then <\/strong>y <strong>else<\/strong>. Antes de la sentencia, incluiremos una variable para que el usuario pueda introducir un valor:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\necho &ldquo;Ingresa un n&uacute;mero&rdquo;\nread num\nif [[$num -gt 10]]\nthen\necho &ldquo;El n&uacute;mero es mayor a 10&rdquo;\nelse\necho &ldquo;El n&uacute;mero es menor a 10&rdquo;<\/pre><h3 class=\"wp-block-heading\" id=\"h-7-lectura-y-escritura-de-archivos\">7. Lectura y escritura de archivos<\/h3><p>Existen varios m&eacute;todos para leer un archivo, siendo el <a href=\"\/es\/tutoriales\/comando-cat-linux\">comando cat<\/a> el<strong> <\/strong>m&aacute;s popular. Ten en cuenta que este comando lee <strong>todo <\/strong>el contenido del archivo.<\/p><p>Para leer el contenido l&iacute;nea por l&iacute;nea, utiliza el comando <strong>read <\/strong>y un bucle. Antes de escribir un script para leer un fichero, aseg&uacute;rate primero de que el fichero existe.<\/p><p>En el siguiente ejemplo, tenemos un archivo <strong>to-do.txt <\/strong>que contiene una lista de tareas pendientes:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Responder email\nFinalizar informe\nLlamar clientes\nEvaluar equipo<\/pre><p>Utilizaremos los comandos <strong>cat <\/strong>y <strong>read <\/strong>en nuestra funci&oacute;n bash para leer e imprimir el contenido del archivo <strong>to-do.txt<\/strong>. La primera parte del script utilizar&aacute; el comando <strong>cat<\/strong>, mientras que la segunda parte utilizar&aacute; el comando <strong>read <\/strong>en un bucle.<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\necho &ldquo;Leyendo el archivo utilizando el comando cat&rdquo;\ncontent=&rsquo;cat to-do.txt&rsquo;\necho $content\necho &ldquo;Leyendo el archivo utilizando el comando leer y bucle&rdquo;\nfilename=&rsquo;to-do.txt&rsquo;\nwhile read line\ndo\necho $line\ndone&lt;$filename<\/pre><p>La salida del script ser&aacute; la siguiente:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Leyendo el archivo utilizando el comando cat\nResponder email Finalizar informe Llamar clientes Evaluar equipo\nLeyendo el archivo utilizando el comando leer y bucle\nResponder email\nFinalizar informe\nLlamar clientes\nEvaluar equipo<\/pre><p>Para escribir la salida de un comando en un archivo, utiliza los operadores de redirecci&oacute;n, representados con los s&iacute;mbolos <strong>&gt; <\/strong>y &gt;&gt;, y acomp&aacute;&ntilde;alos del nombre del archivo:&nbsp;<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">output &gt; nombre del archivo\noutput &gt;&gt; nombre del archivo<\/pre><p>Ten cuidado al elegir el operador. Si el archivo existe, el operador <strong>&gt; <\/strong>sobrescribir&aacute; su contenido con una cadena de longitud cero. Esto significa que perder&aacute;s el contenido del archivo existente. Si el nombre de archivo introducido no existe, lo crear&aacute;.<\/p><p>El operador <strong>&gt;&gt;, <\/strong>por<strong> <\/strong>otro lado, a&ntilde;adir&aacute; la salida al archivo dado.&nbsp;<\/p><p>Aqu&iacute; una simple redirecci&oacute;n para escribir la salida en un archivo de texto:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">echo \"&iexcl;Hola, mundo!\" &gt;&gt; hola_mundo.txt<\/pre><p>La redirecci&oacute;n tambi&eacute;n funciona con el comando <strong>read <\/strong>para escribir cualquier entrada del usuario. Este ejemplo de script a&ntilde;adir&aacute; el valor introducido en el archivo <strong>name.txt<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\necho &ldquo;Ingresa tu nombre&rdquo;\nread Name\necho $Name &gt;&gt; nombre.txt<\/pre><p>Como el script redirige la salida de la variable al archivo, no ver&aacute;s ninguna salida impresa. Para ver la salida imprimiendo el contenido del archivo, a&ntilde;ade la siguiente l&iacute;nea de comando para leer el archivo:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">echo 'cat nombre.txt'<\/pre><p>Aseg&uacute;rate de que tienes permiso para leer y escribir en el archivo para evitar el error de <strong>permiso denegado<\/strong>. Si deseas a&ntilde;adir la salida a archivos existentes, aseg&uacute;rate de escribir los nombres de archivo correctos.<\/p><figure class=\"wp-block-image size-large\"><a href=\"\/es\/servidor-vps\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-29287\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-4-funciones-sencillas-para-probar-en-tu-primer-bash-script\">4 funciones sencillas para probar en tu primer bash script<\/h2><p>Ahora que conocemos algunos comandos bash, veremos ejemplos de funciones bash m&aacute;s b&aacute;sicas para tu primer script.<\/p><p>Como mencionamos anteriormente, cuando quieras escribir un archivo de script bash, utiliza el comando nano filename.sh para crear y abrir un archivo <strong>.sh, <\/strong>y comenzar a escribir tus funciones bash. No olvides salir y guardar el archivo cuando hayas terminado.<\/p><h3 class=\"wp-block-heading\" id=\"h-comienza-con-una-funcion-echo-sencilla\">Comienza con una funci&oacute;n echo sencilla<\/h3><p>Empecemos con una simple funci&oacute;n echo. Empieza definiendo el nombre de la funci&oacute;n seguido del comando echo en la l&iacute;nea siguiente, como en el siguiente ejemplo:&nbsp;<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\ntestfunction () {\necho \"Mi primera funci&oacute;n\"\n}\ntestfunction<\/pre><p>Guarda este script en <strong>testFunction.sh<\/strong>. Cuando ejecutes el script en la l&iacute;nea de comandos, deber&iacute;as ver la siguiente salida:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Mi primera funci&oacute;n<\/pre><p>Ten en cuenta que si intercambias la posici&oacute;n de la definici&oacute;n de la funci&oacute;n con la llamada a la funci&oacute;n, se producir&aacute; un error. Veamos el ejemplo siguiente:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\ntestfunction\ntestfunction(){\necho &ldquo;Mi primera funci&oacute;n&rdquo;\n}<\/pre><p>Este fragmento no funcionar&aacute;. Llama a la funci&oacute;n en la segunda l&iacute;nea de comando y define la funci&oacute;n m&aacute;s tarde. En este caso, el int&eacute;rprete no puede encontrar la funci&oacute;n cuando ejecuta el script, resultando en un error de <strong>comando no encontrado<\/strong>.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"705\" height=\"47\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/comando-no-encontrado.png\/public\" alt=\"Ejemplo de comando no encontrado utilizando Bash\" class=\"wp-image-41149\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/comando-no-encontrado.png\/w=705,fit=scale-down 705w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/comando-no-encontrado.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/comando-no-encontrado.png\/w=150,fit=scale-down 150w\" sizes=\"(max-width: 705px) 100vw, 705px\" \/><\/figure><\/div><h3 class=\"wp-block-heading\" id=\"h-utiliza-pocos-parametros\">Utiliza pocos par&aacute;metros<\/h3><p>Las funciones bash aceptan cualquier n&uacute;mero de par&aacute;metros. El siguiente ejemplo acepta dos par&aacute;metros:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\ntestfunction () {\necho $1\necho $2\n}\ntestfunction &ldquo;Hello&rdquo; &ldquo;World&rdquo;<\/pre><p><strong>$1 <\/strong>representa el primer argumento, mientras que <strong>$2 <\/strong>representa el segundo argumento en la l&iacute;nea de ejecuci&oacute;n de la funci&oacute;n. Como hemos utilizado <strong>&laquo;Hello&raquo; <\/strong>y <strong>&laquo;World&raquo; <\/strong>para los argumentos, la salida tendr&aacute; este aspecto:<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"569\" height=\"69\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/Hello-y-World.png\/public\" alt=\"Prueba del comando Bash\" class=\"wp-image-41150\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/Hello-y-World.png\/w=569,fit=scale-down 569w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/Hello-y-World.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/Hello-y-World.png\/w=150,fit=scale-down 150w\" sizes=\"(max-width: 569px) 100vw, 569px\" \/><\/figure><\/div><p>Tambi&eacute;n puedes utilizar los argumentos de la l&iacute;nea de comandos y realizar funciones bash. Uno de estos ejemplos se muestra a continuaci&oacute;n:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\naddition () {\nsum=$(($1+$2))\nreturn $sum\n}\nread -p \"Ingresa un n&uacute;mero: \" int1\nread -p \"Ingresa un n&uacute;mero: \" int2\naddition $int1 $int2\necho \"El resultado es : \" $?<\/pre><p>La suma se asigna en una variable <strong>sum <\/strong>y &eacute;sta se devuelve desde la funci&oacute;n. Las funciones Bash siempre devuelven un &uacute;nico valor. La entrada del usuario se toma usando <strong>read <\/strong>para ambos n&uacute;meros. Finalmente, el resultado se imprime usando <strong>$? <\/strong>que almacena el valor de retorno <strong>$suma <\/strong>de la funci&oacute;n.<\/p><h3 class=\"wp-block-heading\" id=\"h-crea-directorios-y-cambia-rutas\">Crea directorios y cambia rutas<\/h3><p>Ahora, veamos otro ejemplo de funci&oacute;n donde primero creamos un directorio y luego cambiamos la ruta para que apunte a una nueva ubicaci&oacute;n. Esta funci&oacute;n contendr&aacute; <a href=\"\/es\/tutoriales\/linux-comandos\">comandos Linux<\/a><strong> mkdir <\/strong>y <strong>cd <\/strong>para crear un nuevo directorio y cambiar el directorio actual:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\nsampleFunction () {\nmkdir -p $1\ncd $1\n}\nsampleFunction myDir<\/pre><p>La funci&oacute;n leer&aacute; el primer argumento y crear&aacute; un directorio con ese nombre. Despu&eacute;s de ejecutar el script, comprueba la ruta de trabajo actual utilizando el comando <strong>pwd <\/strong>en el terminal. Ver&aacute;s que actualmente est&aacute;s dentro del reci&eacute;n creado <strong>myDir<\/strong>.<\/p><h3 class=\"wp-block-heading\" id=\"h-combinar-bucles-y-condicionales\">Combinar bucles y condicionales<\/h3><p>Los bucles y las sentencias condicionales tambi&eacute;n son populares en los scripts bash. Vamos a ver algunos casos de uso de ambos en el mismo script:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\nisvalid=true\ncount=1\nwhile [ $isvalid ]\ndo\necho $count\nif [ $count -eq 5 ];\nthen\nbreak\nfi\n((count++))\ndone<\/pre><p>El ejemplo anterior utiliza las sentencias <strong>while <\/strong>e <strong>if<\/strong>. Esto ejecuta el bucle <strong>while<\/strong> cinco veces despu&eacute;s de comprobar la sentencia condicional.<\/p><p>La salida de este script ser&aacute;:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">1\n2\n3\n4\n5<\/pre><p>El bucle <strong>for <\/strong>puede incrementar y disminuir los contadores. A continuaci&oacute;n se muestra un ejemplo del bucle <strong>for<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\nfor (( count=10; count&gt;0; count-- ))\ndo\necho -n \"$count \"\ndone<\/pre><p>La salida de este bucle deber&iacute;a ser:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">10 9 8 7 6 5 4 3 2 1<\/pre><p>Con las sentencias <strong>if<\/strong>, tambi&eacute;n podemos definir <strong>else if <\/strong>utilizando la sentencia <strong>elif<\/strong>:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\necho \"Ingresa un n&uacute;mero v&aacute;lido\"\nread n\nif [ $n -eq 101 ];\nthen\necho \"&Eacute;ste es el primer n&uacute;mero\"\nelif [ $n -eq 510 ];\nthen\necho \"&Eacute;ste es el segundo n&uacute;mero\"\nelif [ $n -eq 999 ];\nthen\necho \"&Eacute;ste es el tercer n&uacute;mero\"\nelse\necho \"No hay n&uacute;meros\"\nfi<\/pre><p>Tambi&eacute;n podemos escribir ese script utilizando la sentencia <strong>case<\/strong>. En las sentencias <strong>case<\/strong>, <strong>;; <\/strong>representa un salto de caso, por lo que si el valor de la variable cumple alguna de las condiciones, salta al final del script:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\necho \"Ingresa un n&uacute;mero v&aacute;lido\"\nread n\ncase $n in\n101)\necho \"&Eacute;ste es el primer n&uacute;mero\" ;;\n510)\necho \"&Eacute;ste es el segundo n&uacute;mero\" ;;\n999)\necho \"&Eacute;ste es el tercer n&uacute;mero\" ;;\n*)\necho \"No hay n&uacute;meros\" ;;\nesac<\/pre><h2 class=\"wp-block-heading\" id=\"h-como-ejecutar-un-script-bash\">C&oacute;mo ejecutar un script Bash<\/h2><p>Ahora que hemos escrito un bash script, aprendamos a ejecutarlo desde la terminal. Hay tres m&eacute;todos para hacerlo: usando el comando <strong>bash<\/strong>, usando el comando <strong>.\/<\/strong> y ejecutando el script desde un directorio diferente.<\/p><h3 class=\"wp-block-heading\" id=\"h-uso-del-comando-bash\">Uso del comando bash<\/h3><p>El primer m&eacute;todo es utilizando el comando bash desde el directorio apropiado. Por ejemplo, puedes tener un script bash <strong>function.sh <\/strong>que contenga funciones echo simples en el directorio <strong>Test\/Bash<\/strong>. Primero tienes que abrir el directorio utilizando este comando:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cd Test\/Bash<\/pre><p>A continuaci&oacute;n, ejecuta el siguiente comando bash para ejecutar el script bash:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">bash function.sh<\/pre><p>Deber&iacute;as ver la salida as&iacute;:<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"571\" height=\"111\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/comando-bash-para-ejecutar-el-script-bash.png\/public\" alt=\"Salida del comando Bash\" class=\"wp-image-41151\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/comando-bash-para-ejecutar-el-script-bash.png\/w=571,fit=scale-down 571w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/comando-bash-para-ejecutar-el-script-bash.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/comando-bash-para-ejecutar-el-script-bash.png\/w=150,fit=scale-down 150w\" sizes=\"(max-width: 571px) 100vw, 571px\" \/><\/figure><\/div><p>Si intentas ejecutar el script sin el comando <strong>bash<\/strong>, recibir&aacute;s un mensaje de error de <strong>comando no encontrado<\/strong>.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"511\" height=\"48\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/comando-no-encontrado-bash.png\/public\" alt=\"Linea del comando mostrando error en la salida del comando bas no encontrado\" class=\"wp-image-41152\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/comando-no-encontrado-bash.png\/w=511,fit=scale-down 511w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/comando-no-encontrado-bash.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/comando-no-encontrado-bash.png\/w=150,fit=scale-down 150w\" sizes=\"(max-width: 511px) 100vw, 511px\" \/><\/figure><\/div><h3 class=\"wp-block-heading\" id=\"h-uso-del-comando\">Uso del comando .\/<\/h3><p>Puedes ejecutar un script bash sin el comando <strong>bash<\/strong>. Sin embargo, tienes que configurar el archivo para que tengas el permiso de <strong>ejecuci&oacute;n <\/strong>utilizando el siguiente comando desde el directorio apropiado:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">chmod +x function.sh<\/pre><p>Este comando modifica los permisos del archivo para que todo el mundo pueda ejecutarlo. Una vez hecho esto, ejecuta el script bash usando este comando:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">.\/funcion.sh<\/pre><p>Si no estableces el permiso correctamente, el terminal imprimir&aacute; un mensaje de error <strong>Permiso denegado<\/strong>:<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"530\" height=\"49\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/Permiso-denegado.png\/public\" alt=\"Linea de comando mostrando error por permiso denegado\" class=\"wp-image-41153\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/Permiso-denegado.png\/w=530,fit=scale-down 530w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/Permiso-denegado.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2024\/07\/Permiso-denegado.png\/w=150,fit=scale-down 150w\" sizes=\"(max-width: 530px) 100vw, 530px\" \/><\/figure><\/div><p>Al igual que el comando <strong>bash<\/strong>, tambi&eacute;n obtendr&aacute;s un error de <strong>comando no encontrado <\/strong>si no utilizas <strong>.\/ <\/strong>en tu comando.<\/p><h3 class=\"wp-block-heading\" id=\"h-ejecutar-el-script-desde-un-directorio-diferente\">Ejecutar el script desde un directorio diferente<\/h3><p>Otra alternativa es ejecutar el script desde un directorio diferente. Despu&eacute;s de crear el script bash, utiliza el comando <strong>pwd <\/strong>para encontrar tu directorio actual. Una vez que conozcas la ruta, puedes ejecutar el script desde cualquier directorio. Por ejemplo, utiliza el siguiente comando para ejecutar <strong>function.sh <\/strong>desde el directorio de inicio:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">bash Test\/Bash\/function.sh<\/pre><p>\n\n\n\n<div class=\"protip\">\n                    <h4 class=\"title\">Consejo profesional<\/h4>\n                    <p>Utiliza el comando <strong>cd <\/strong>para ir directamente al directorio ra&iacute;z, independientemente del directorio en el que te encuentres.<\/p>\n                <\/div>\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusi&oacute;n<\/h2><p>Bash lee comandos de shell e interact&uacute;a con el sistema operativo para ejecutarlos. El gran aspecto de bash es que puedes compilar muchos comandos y funciones bash en un &uacute;nico script ejecutable, lo que te ayuda a agilizar tu flujo de trabajo.<\/p><p>Para crear un archivo de bash script, necesitas entender los diversos comandos del shell y su sintaxis correcta. En este tutorial, hemos cubierto siete comandos b&aacute;sicos:<\/p><ul class=\"wp-block-list\">\n<li>Comentarios<\/li>\n\n\n\n<li>Variables<\/li>\n\n\n\n<li>Echo<\/li>\n\n\n\n<li>Funciones<\/li>\n\n\n\n<li>Bucles<\/li>\n\n\n\n<li>Declaraciones condicionales<\/li>\n\n\n\n<li>Lectura y escritura de archivos<\/li>\n<\/ul><p>Sin embargo, hay mucho m&aacute;s que aprender si quieres ser capaz de utilizar todo el potencial de bash. Practica con los ejemplos que te hemos proporcionado y contin&uacute;a explorando bash para que puedas escribir scripts mejores y m&aacute;s eficientes.<\/p><p>Esperamos que esta gu&iacute;a para ejecutar scripts de bash te haya sido de utilidad. Si tienes alg&uacute;n comentario o pregunta, escr&iacute;bela en la secci&oacute;n de abajo. &iexcl;Buena suerte!<\/p><figure class=\"wp-block-image size-large\"><a href=\"\/es\/servidor-vps\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/public\" alt=\"\" class=\"wp-image-29287\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/32\/2023\/02\/ES-VPS-hosting_in-text-banner.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h2 class=\"wp-block-heading\" id=\"h-scripting-en-bash-preguntas-frecuentes-nbsp\">Scripting en bash &ndash; Preguntas frecuentes<strong>&nbsp;<\/strong><\/h2><p>Esta secci&oacute;n cubre algunas de las preguntas m&aacute;s comunes sobre scripts en bash. <\/p><div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-694473bea6ed1\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">&iquest;Es f&aacute;cil aprender Bash?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Bash es bastante f&aacute;cil de aprender y muchos estudiantes dominan, tanto los comandos b&aacute;sicos, como los avanzados en aproximadamente medio a&ntilde;o.&nbsp;<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-694473bea6ed4\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">&iquest;Es Bash m&aacute;s f&aacute;cil que Python?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No, Python sigue siendo m&aacute;s f&aacute;cil y sencillo que Bash. Dado que Bash fue originalmente un reemplazo de software para Bourne shell, Bash sigue siendo dif&iacute;cil de escribir en comparaci&oacute;n con Python. Python tambi&eacute;n es m&aacute;s potente que Bash.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-694473bea6ed5\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">&iquest;Para qu&eacute; sirve Bash?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Bash scripting se utiliza sobre todo para automatizar tareas de desarrollo como la compilaci&oacute;n de c&oacute;digo, la depuraci&oacute;n, la gesti&oacute;n de cambios y las pruebas. Los ingenieros de redes tambi&eacute;n utilizan Bash para probar, optimizar y configurar redes organizativas.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Si alguna vez has utilizado un sistema operativo Linux, como la mayor&iacute;a de los VPS (servidores privados virtuales), es posible que hayas o&iacute;do hablar de bash. Este es un int&eacute;rprete Unix que lee y ejecuta varios comandos. Cuando necesites ejecutar varios comandos bash, no tienes que ejecutarlos manualmente de uno en uno. En su lugar, [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/es\/tutoriales\/bash-script-linux\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":85,"featured_media":46592,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_title":"Tutorial de Bash Script: funciones, c\u00f3mo escribir uno y ejemplos","rank_math_description":"Bash script te ayuda a automatizar tareas y mejorar la eficiencia en sistemas Unix. Aprende a escribir tus scripts y optimiza tu trabajo.","rank_math_focus_keyword":"bash script","footnotes":""},"categories":[5700],"tags":[],"class_list":["post-9057","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vps"],"hreflangs":[{"locale":"es-ES","link":"https:\/\/www.hostinger.com\/es\/tutoriales\/bash-script-linux","default":0},{"locale":"es-AR","link":"https:\/\/www.hostinger.com\/ar\/tutoriales\/como-usar-tmux-5","default":0},{"locale":"es-MX","link":"https:\/\/www.hostinger.com\/mx\/tutoriales\/que-son-hooks-wordpress-15","default":0},{"locale":"es-CO","link":"https:\/\/www.hostinger.com\/co\/tutoriales\/que-son-hooks-wordpress-15","default":0}],"acf":[],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts\/9057","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/users\/85"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/comments?post=9057"}],"version-history":[{"count":23,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts\/9057\/revisions"}],"predecessor-version":[{"id":49959,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/posts\/9057\/revisions\/49959"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/media\/46592"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/media?parent=9057"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/categories?post=9057"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/es\/tutoriales\/wp-json\/wp\/v2\/tags?post=9057"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}