Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
tutorial_de_programacion_en_bash [2023/02/27 02:38] – [Tutorial de Programación en Bash] peron | tutorial_de_programacion_en_bash [2023/06/06 18:27] (actual) – [Tutorial de Programación en Bash] peron | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
=====Tutorial de Programación en Bash===== | =====Tutorial de Programación en Bash===== | ||
- | Además de ser un [[interpretes de comandos|intérprete de comandos]], [[Bash]] también consiste en un //lenguaje de comandos interpretado// | + | [[Bash]] es una [[interpretes de comandos|shell]], que además cuenta con un //lenguaje de comandos interpretado// |
- | + | ||
- | 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]], | ||
====Variables==== | ====Variables==== | ||
Línea 9: | Línea 8: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
NAME=" | NAME=" | ||
Línea 23: | Línea 22: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
#Define una variable global de bash | #Define una variable global de bash | ||
Línea 43: | Línea 42: | ||
<code bash> | <code bash> | ||
- | $ env | + | env |
</ | </ | ||
- | Generalmente se suele definir estas variables en mayñusculas, por ejemplo: '' | + | Generalmente se suele definir estas variables en mayúsculas, por ejemplo: '' |
==== Citas ==== | ==== Citas ==== | ||
Línea 54: | Línea 53: | ||
===Cita con cadena=== | ===Cita con cadena=== | ||
- | No existe diferencia al utilizar | + | No existe diferencia al utilizar |
- | El siguiente | + | El siguiente |
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
- | echo ' | + | echo ' |
- | echo " | + | echo " |
- | mkdir 'Dir 1' | + | mkdir 'Directorio |
- | mkdir "Dir 2" | + | mkdir "Directorio |
</ | </ | ||
Línea 72: | Línea 71: | ||
Recuerda que las expansión de variables de Bash __únicamente operará con las comillas__. Si defines cualquier variable en comillas simples, ¡no funcionarán! | Recuerda que las expansión de variables de Bash __únicamente operará con las comillas__. Si defines cualquier variable en comillas simples, ¡no funcionarán! | ||
- | Ejecuta el siguiente | + | Ejecuta el siguiente |
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
NOMBRE=" | NOMBRE=" | ||
Línea 85: | Línea 84: | ||
====Depuración en Bash ==== | ====Depuración en Bash ==== | ||
- | El guionado de Bash provee una funcionalidad de depuración durante el tiempo de ejecución. Emplea el comando '' | + | El guionado de Bash provee una funcionalidad de depuración durante el tiempo de ejecución. Emplea el comando '' |
===Depurado durante la ejecución=== | ===Depurado durante la ejecución=== | ||
Línea 97: | Línea 96: | ||
===Depurado de un guión=== | ===Depurado de un guión=== | ||
- | Si deseas activar la depuración __dentro del mismo guión__, podrás depurar cierta parte del guión. | + | Si deseas activar la depuración __dentro del mismo guion__, podrás depurar cierta parte del guion. |
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
set -xv # Esta línea activa el depurado | set -xv # Esta línea activa el depurado | ||
Línea 110: | Línea 109: | ||
</ | </ | ||
- | Ahora corre el script... | + | Ahora corre el guion... |
<code bash> | <code bash> | ||
- | $ ./script.sh | + | $ ./guion.sh |
</ | </ | ||
Línea 133: | Línea 132: | ||
====Código de Salida==== | ====Código de Salida==== | ||
- | Un //código de salida// en Bash es un valor en código que representa el resultado de la ejecución apropiada de un programa, representado por un valor entre 0 y 255. Tal número denota el status de salida del último comando introducido, | + | Un //código de salida// en Bash es un valor en código que representa el resultado de la ejecución apropiada de un programa, representado por un valor entre 0 y 255. Tal número denota el status de salida del último comando introducido, |
| '' | | '' | ||
Línea 143: | Línea 142: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
echo "Viva Bash, más rápido que un flash!" | echo "Viva Bash, más rápido que un flash!" | ||
Línea 159: | Línea 158: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
STRING=" | STRING=" | ||
Línea 196: | Línea 195: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
read -p " | read -p " | ||
Línea 204: | Línea 203: | ||
</ | </ | ||
- | ==== Operaciones aritméticas | + | ==== Operadores |
- | Utiliza | + | Los [[operadores en unix]] permiten realizar distinto tipo de operaciones en la shell. Bash cuenta con los mismos operadores, y extiende su utilización, |
+ | |||
+ | A continuación encontrarás ejemplos de su uso en Bash. | ||
+ | |||
+ | |||
+ | ===Operadores aritméticos ==== | ||
+ | En Bash podrás encerrar | ||
<code bash> | <code bash> | ||
Línea 215: | Línea 220: | ||
</ | </ | ||
- | ===Ejemplo de operadores aritméticos=== | + | ==Ejemplo de operadores aritméticos== |
Este guion permite ingresar dos valores numéricos para realizar las cinco operaciones básicas: | Este guion permite ingresar dos valores numéricos para realizar las cinco operaciones básicas: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
read -p " | read -p " | ||
Línea 229: | Línea 234: | ||
echo "La División de $n1 / $n2 es = " $((n1/n2)) | echo "La División de $n1 / $n2 es = " $((n1/n2)) | ||
echo "La Multiplicación de $n1 * $n2 es = " $((n1*n2)) | echo "La Multiplicación de $n1 * $n2 es = " $((n1*n2)) | ||
- | echo " | + | echo " |
+ | </ | ||
+ | |||
+ | ===Operadores de comparación de cadena=== | ||
+ | Utiliza doble igual ('' | ||
+ | |||
+ | <code bash> | ||
+ | if [ " | ||
+ | if [ " | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===Operadores de comparación numérica=== | ||
+ | |||
+ | Como en todos los shells de tipo Unix, en Bash podrás utilizar operadores de comparación numérica. | ||
+ | |||
+ | <code bash> | ||
+ | ((n1 == n2)) ## n1 es igual a n2 | ||
+ | ((n1 != n2)) ## n1 es no igual a n2 | ||
+ | ((n1 > n2)) ## n1 es mayor a n2 | ||
+ | ((n1 >= n2)) ## n1 es mayor o igual a n2 | ||
+ | ((n1 < n2)) ## n1 es menor a n2 | ||
+ | ((n1 <= n2)) ## n1 es menor o igual a n2 | ||
</ | </ | ||
Línea 246: | Línea 273: | ||
</ | </ | ||
- | En forma similar, puedes utilizar operadores de pre-decremento y post-decremento. | + | En forma similar, puedes utilizar |
<code bash> | <code bash> | ||
Línea 257: | Línea 284: | ||
$ echo $((--variable)) | $ echo $((--variable)) | ||
</ | </ | ||
+ | |||
+ | |||
===== Condicionales ===== | ===== Condicionales ===== | ||
En un lenguaje de programación se utilizan bucles para repetir la ejecución de un bloque de código hasta que se satisfaga una condición definida. Esto es sumamente útil para realizar tareas repetitivas. Existen tres tipos de bucles principales: | En un lenguaje de programación se utilizan bucles para repetir la ejecución de un bloque de código hasta que se satisfaga una condición definida. Esto es sumamente útil para realizar tareas repetitivas. Existen tres tipos de bucles principales: | ||
Línea 277: | Línea 306: | ||
===Ejemplo if-then=== | ===Ejemplo if-then=== | ||
+ | Este programa solicita que ingreses una cifra, y te informa si es mayor a '' | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
read -p " | read -p " | ||
Línea 289: | Línea 318: | ||
</ | </ | ||
- | ===Ejemplo | + | ===Ejemplos |
- | Usando la declaración if-else, es posible ejecutar una declaración condicional si esta resulta falsa. Para ello se define un bloque de texto con '' | + | Usando la declaración if-else |
+ | |||
+ | Este ejemplo implica un condicional por comparación numérica. Dará // | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
- | read -p " | + | read -p " |
if [ $myvar -gt 10 ] | if [ $myvar -gt 10 ] | ||
Línea 306: | Línea 337: | ||
</ | </ | ||
- | Este texto difiere en que si es verdadero que el valor ingresado por el usuario es mayor a '' | + | Este ejemplo realiza una comparación de cadenas |
+ | |||
+ | <code bash> | ||
+ | # | ||
+ | |||
+ | read -p " | ||
+ | read -p " | ||
+ | if [ " | ||
+ | then | ||
+ | echo "Ambas cadenas son iguales" | ||
+ | else | ||
+ | echo "Ambas cadenas son diferentes" | ||
+ | fi | ||
+ | </ | ||
===Ejemplo if-elif-else=== | ===Ejemplo if-elif-else=== | ||
- | La condición **elif** (else-if) se usa para incorporar múltiples condicionales '' | + | La condición **elif** (else-if, "si además" |
- | En este ejemplo de condicioniales // | + | En este ejemplo de condicioniales // |
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
read -p " | read -p " | ||
Línea 335: | Línea 380: | ||
===Ejemplo de condicionales if anidados === | ===Ejemplo de condicionales if anidados === | ||
- | Con los **if anidados**, | + | Con los **if anidados**, |
- | Por ejemplo, | + | Por ejemplo, |
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
- | read -p "Ingresa el valor de i :" | + | read -p "Cuantas copas tiene Boca :" |
- | read -p "Ingresa el valor de j :" | + | read -p "Cuantas copas tiene River :" |
- | read -p "Ingresa el valor de k :" | + | read -p "Cuantas copas tiene Independiente |
- | if [ $i -gt $j ] | + | if [ $boca -gt $river ] |
then | then | ||
- | if [ $i -gt $k ] | + | if [ $boca -gt $independiente |
then | then | ||
- | echo "i es el mayor" | + | echo "Boca es el más grande" |
else | else | ||
- | echo "k es el mayor" | + | echo "Independiente |
fi | fi | ||
else | else | ||
- | if [ $j -gt $k ] | + | if [ $river -gt $independiente |
then | then | ||
- | echo "j es el mayor" | + | echo "River es el más grande" |
else | else | ||
- | echo "k es el mayor" | + | echo "Independiente |
fi | fi | ||
fi | fi | ||
Línea 398: | Línea 443: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
while true | while true | ||
Línea 409: | Línea 454: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
while true | while true | ||
Línea 445: | Línea 490: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
num=1 | num=1 | ||
Línea 519: | Línea 564: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
read -p " | read -p " | ||
Línea 573: | Línea 618: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
for i in 1 2 3 4 5 | for i in 1 2 3 4 5 | ||
Línea 584: | Línea 629: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
for i in {1..5} | for i in {1..5} | ||
Línea 595: | Línea 640: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
for dia in DOM LUN MAR MIE JUE VIE SAB DOM | for dia in DOM LUN MAR MIE JUE VIE SAB DOM | ||
Línea 623: | Línea 668: | ||
<code bash> | <code bash> | ||
- | #!/bin/bash | + | #!/usr/local/bin/bash |
for nombrefichero in * | for nombrefichero in * | ||
Línea 632: | Línea 677: | ||
+ | ====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. | ||
+ | Sintaxis: | ||
+ | |||
+ | <code bash> | ||
+ | nombreFuncion(){ | ||
+ | // procedimiento de la función | ||
+ | } | ||
+ | |||
+ | nombreFuncion | ||
+ | </ | ||
+ | |||
+ | ===Creación de una función === | ||
+ | |||
+ | Crea tu primer función de un guion de bash para que presente la cadena "Hola Texto-plano.xyz!" | ||
+ | |||
+ | <code bash> | ||
+ | # | ||
+ | |||
+ | funSaludazo(){ | ||
+ | echo " | ||
+ | } | ||
+ | |||
+ | # llama a la función saludazo desde cualquier lugar del guion, por ejemplo, ahora mismo: | ||
+ | |||
+ | funSaludazo | ||
+ | </ | ||
+ | |||
+ | Ejecuta el guion creado: | ||
+ | |||
+ | <code bash> | ||
+ | $ ./saludo.sh | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | ===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 '' | ||
+ | |||
+ | <code bash> | ||
+ | # | ||
+ | |||
+ | funArgumentos(){ | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | } | ||
+ | |||
+ | # Llama a funArgumentos desde cualquier lugar en el guion, utilizando parámetros como los indicados a continuación | ||
+ | |||
+ | funArgumentos 1 Bienvenido a Texto-plano.xyz | ||
+ | </ | ||
+ | |||
+ | Ejecuta el guion desde la shell de Bash: | ||
+ | |||
+ | <code bash> | ||
+ | $ ./saludo.sh | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Primer Argumetno : 1 | ||
+ | Segundo Argumento : Bienvenido | ||
+ | Tercer Argumento : a | ||
+ | Cuarto Argumento : Texto-plano.xyz | ||
+ | </ |