Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| tutorial_de_programacion_en_bash [2023/06/06 18:21] – peron | tutorial_de_programacion_en_bash [2026/04/21 16:09] (actual) – editor externo 127.0.0.1 | ||
|---|---|---|---|
| Línea 2: | Línea 2: | ||
| [[Bash]] es una [[interpretes de comandos|shell]], | [[Bash]] es una [[interpretes de comandos|shell]], | ||
| - | Si has completado [[lenguaje_del_interprete_de_comandos|el primer Tutorial del lenguaje de intérprete de comandos]], sin dudas este tutorial te enseñará algunas de sus características más avanzadas de Bash. | + | Si ya has completado [[lenguaje_del_interprete_de_comandos|el primer Tutorial del lenguaje de intérprete de comandos]] y sabes cómo hacer [[script|guiones simples de programación]], sin dudas este tutorial te enseñará algunas de sus características más avanzadas de Bash. |
| ====Variables==== | ====Variables==== | ||
| Línea 54: | Línea 53: | ||
| ===Cita con cadena=== | ===Cita con cadena=== | ||
| - | No existe diferencia al utilizar apóstrofo ''< | + | No existe diferencia al utilizar apóstrofo ''< |
| El siguiente guion correrá sin errores y presentará el mensaje indicado y creará ambos directorios: | El siguiente guion correrá sin errores y presentará el mensaje indicado y creará ambos directorios: | ||
| Línea 140: | Línea 139: | ||
| ===Ejemplo=== | ===Ejemplo=== | ||
| - | Escribe un programa para escribir una cadena de texto en ''/ | + | Escribe un programa para escribir una cadena de texto en ''/ |
| - | <code bash> | + | <file bash fichero_prueba.txt> |
| # | # | ||
| Línea 152: | Línea 151: | ||
| echo "Lo siento, no puedo escribir en / | echo "Lo siento, no puedo escribir en / | ||
| fi | fi | ||
| - | </code> | + | </file> |
| Línea 158: | Línea 157: | ||
| Este fichero buscará la cadena '' | Este fichero buscará la cadena '' | ||
| - | <code bash> | + | <file bash buscapersona.sh> |
| # | # | ||
| - | STRING=" | + | CADENA=" |
| - | if grep ${STRING} /etc/passwd | + | if grep ${CADENA} /etc/passwd |
| then | then | ||
| echo "Si! Encontré la cadena" | echo "Si! Encontré la cadena" | ||
| Línea 169: | Línea 168: | ||
| echo "Buu!, no encontré la cadena" | echo "Buu!, no encontré la cadena" | ||
| fi | fi | ||
| - | </code> | + | </file> |
| ====Entrada de Usuario==== | ====Entrada de Usuario==== | ||
| Línea 181: | Línea 180: | ||
| </ | </ | ||
| - | También podrás indicar algún texto que se presentará a modo de información, a la hora de solicitar la entrada: | + | También podrás indicar algún texto con '' |
| <code bash> | <code bash> | ||
| - | read -p "Dime tu nombre de usuari@: " | + | read -p "Dime tu nombre de usuari@: " |
| </ | </ | ||
| - | Podrás utilizar el argumento | + | Podrás utilizar el argumento |
| <code bash> | <code bash> | ||
| - | $ read -sp "Dime de que equipo eres fanátic@: " | + | $ read -sp "Dime de que equipo eres fanátic@: " |
| </ | </ | ||
| Utiliza en un guion de Bash la funcionalidad del comando //read// para solicitar el ingreso de datos al usuario: | Utiliza en un guion de Bash la funcionalidad del comando //read// para solicitar el ingreso de datos al usuario: | ||
| - | <code bash> | + | <file bash dime_tu_nombre.sh> |
| # | # | ||
| - | read -p " | + | read -p " |
| - | read -sp "Dime de qué equipo eres fanátic@: " | + | read -sp " |
| - | echo -e "\nTu nombre de usuari@ es $miusuario | + | echo -e "\nTu nombre de usuari@ es $tuusuario |
| - | </code> | + | </file> |
| ==== Operadores ==== | ==== Operadores ==== | ||
| Línea 211: | Línea 210: | ||
| ===Operadores aritméticos ==== | ===Operadores aritméticos ==== | ||
| - | En Bash podrás encerrar entre paréntesis dobles ''< | + | En Bash podrás encerrar entre //paréntesis dobles// ''< |
| <code bash> | <code bash> | ||
| - | (expresion)) | + | ((expresion)) |
| - | (variable1+variable2)) | + | ((variable1+variable2)) |
| - | (variable1-variable2)) | + | ((variable1-variable2)) |
| - | (variable1*variable2)) | + | ((variable1*variable2)) |
| - | (variable1/ | + | ((variable1/ |
| </ | </ | ||
| Línea 298: | Línea 297: | ||
| <code bash> | <code bash> | ||
| - | if [ condicion | + | if [ condición |
| then | then | ||
| hacer-algo | hacer-algo | ||
| Línea 311: | Línea 310: | ||
| # | # | ||
| - | read -p " | + | read -p " |
| - | if [ $myvar -gt 10 ] | + | if [ $mivariable |
| then | then | ||
| echo "El valor es mayor que 10" | echo "El valor es mayor que 10" | ||
| Línea 328: | Línea 327: | ||
| # | # | ||
| - | read -p " | + | read -p " |
| - | if [ $myvar -gt 10 ] | + | if [ $mivariable |
| then | then | ||
| echo " | echo " | ||
| Línea 385: | Línea 384: | ||
| Por ejemplo, este programa solicita ingresar 3 valores numéricos como entrada y realiza una comparación numérica para analizar cuál es el valor mayor. | Por ejemplo, este programa solicita ingresar 3 valores numéricos como entrada y realiza una comparación numérica para analizar cuál es el valor mayor. | ||
| - | <code bash> | + | <file bash el_mas_grande.sh> |
| # | # | ||
| - | read -p " | + | read -p " |
| - | read -p " | + | read -p " |
| - | read -p " | + | read -p " |
| - | if [ $boca -gt $river ] | + | if [ $copasboca |
| then | then | ||
| - | if [ $boca -gt $independiente | + | if [ $copasboca |
| then | then | ||
| echo "Boca es el más grande" | echo "Boca es el más grande" | ||
| Línea 401: | Línea 400: | ||
| fi | fi | ||
| else | else | ||
| - | if [ $river -gt $independiente | + | if [ $copasriver |
| then | then | ||
| echo "River es el más grande" | echo "River es el más grande" | ||
| Línea 408: | Línea 407: | ||
| fi | fi | ||
| fi | fi | ||
| - | </code> | + | </file> |
| ==== While ==== | ==== While ==== | ||
| Línea 516: | Línea 515: | ||
| En este ejemplo el se leerá en bucle línea a línea de '' | En este ejemplo el se leerá en bucle línea a línea de '' | ||
| + | __Ver también__: [[while.sh]] (ejemplo '' | ||
| + | ====Until==== | ||
| + | |||
| + | //Until//, es una instrucción de control que sirve para generar bucles, en los cuales grupos de instrucciones anidadas dentro de un bloque se ejecutan de forma repetida hasta que se cumpla una condición. Sigue la sintaxis '' | ||
| + | |||
| + | Cabe destacar que Until, primero comprobará si se cumple la condición y si se cumple y sólo si se cumple entonces finaliza la secuencia de las instrucciones contenidas entre do y done. | ||
| + | |||
| + | Cada vez que se ejecuta un bucle completo (paso de bucle) vuelve a verificar si se cumple la condición antes de volver a ejecutar otro paso de bucle. | ||
| + | |||
| + | ===Ejemplo Until-do-done=== | ||
| + | <code bash> | ||
| + | until [ " | ||
| + | do | ||
| + | | ||
| + | | ||
| + | | ||
| + | done | ||
| + | </ | ||
| + | |||
| + | ==do y done== | ||
| + | |||
| + | Las acciones entre '' | ||
| + | ===Ejemplo Do-Done=== | ||
| + | <code bash> | ||
| + | < | ||
| + | i=10; | ||
| + | |||
| + | until [ $limite -gt $i ] | ||
| + | do | ||
| + | echo Acción $i ejecutada | ||
| + | let i=$i-1 | ||
| + | done | ||
| + | </ | ||
| + | |||
| + | El ejemplo anterior mostraría por pantalla: | ||
| + | < | ||
| + | Acción 10 ejecutada | ||
| + | Acción 9 ejecutada | ||
| + | Acción 8 ejecutada | ||
| + | Acción 7 ejecutada | ||
| + | Acción 6 ejecutada | ||
| + | Acción 5 ejecutada | ||
| + | </ | ||
| ==== case ==== | ==== case ==== | ||
| Línea 677: | Línea 719: | ||
| </ | </ | ||
| + | __Ver también__: [[manzanas.sh]] (Ejemplo bucle '' | ||
| ====Funciones==== | ====Funciones==== | ||
| - | Una función (también llamadas subrutinas o procedimientos) es una sección de código utilizada para realizar una tarea específica. Estas pueden ser reutilizadas. | + | |
| + | Una //función// (también llamadas | ||
| Sintaxis: | Sintaxis: | ||
| Línea 695: | Línea 738: | ||
| Crea tu primer función de un guion de bash para que presente la cadena "Hola Texto-plano.xyz!" | Crea tu primer función de un guion de bash para que presente la cadena "Hola Texto-plano.xyz!" | ||
| - | <code bash> | + | <file bash saludo1.sh> |
| # | # | ||
| Línea 705: | Línea 748: | ||
| funSaludazo | funSaludazo | ||
| - | </code> | + | </file> |
| Ejecuta el guion creado: | Ejecuta el guion creado: | ||
| <code bash> | <code bash> | ||
| - | $ ./saludo.sh | + | $ ./saludo1.sh |
| </ | </ | ||
| Línea 716: | Línea 759: | ||
| ===Función con argumento=== | ===Función con argumento=== | ||
| + | |||
| Para indicarle un argumento a la función es necesario hacerlo de la misma manera que argumentarías cualquier comando desde el intérprete de comandos: agregándolos a continuación con un espacio en blanco. Las funciones reciben argumentos '' | Para indicarle un argumento a la función es necesario hacerlo de la misma manera que argumentarías cualquier comando desde el intérprete de comandos: agregándolos a continuación con un espacio en blanco. Las funciones reciben argumentos '' | ||
| - | <code bash> | + | <file bash saludo2.sh> |
| # | # | ||
| Línea 731: | Línea 775: | ||
| funArgumentos 1 Bienvenido a Texto-plano.xyz | funArgumentos 1 Bienvenido a Texto-plano.xyz | ||
| - | </code> | + | </file> |
| Ejecuta el guion desde la shell de Bash: | Ejecuta el guion desde la shell de Bash: | ||
| <code bash> | <code bash> | ||
| - | $ ./saludo.sh | + | $ ./saludo2.sh |
| </ | </ | ||
| < | < | ||
| - | Primer | + | Primer |
| Segundo Argumento : Bienvenido | Segundo Argumento : Bienvenido | ||
| Tercer Argumento : a | Tercer Argumento : a | ||
| Cuarto Argumento : Texto-plano.xyz | Cuarto Argumento : Texto-plano.xyz | ||
| </ | </ | ||
