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 17:16] – [If-Else] 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 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 256: | Línea 283: | ||
$ variable=10 | $ variable=10 | ||
$ echo $((--variable)) | $ echo $((--variable)) | ||
- | </ | ||
- | |||
- | ===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 294: | Línea 308: | ||
Este programa solicita que ingreses una cifra, y te informa si es mayor a '' | 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 304: | Línea 318: | ||
</ | </ | ||
- | ===Ejemplo | + | ===Ejemplos |
Usando la declaración if-else ("// | Usando la declaración if-else ("// | ||
- | Este ejemplo implica un condicional // | + | Este ejemplo implica un condicional |
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
read -p " | read -p " | ||
Línea 320: | Línea 334: | ||
else | else | ||
echo "No es correcto" | echo "No es correcto" | ||
+ | fi | ||
+ | </ | ||
+ | |||
+ | Este ejemplo realiza una comparación de cadenas y las compara: | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | |||
+ | read -p " | ||
+ | read -p " | ||
+ | if [ " | ||
+ | then | ||
+ | echo "Ambas cadenas son iguales" | ||
+ | else | ||
+ | echo "Ambas cadenas son diferentes" | ||
fi | fi | ||
</ | </ | ||
Línea 330: | Línea 359: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
read -p " | read -p " | ||
Línea 356: | Línea 385: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
read -p " | read -p " | ||
Línea 414: | Línea 443: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
while true | while true | ||
Línea 425: | Línea 454: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
while true | while true | ||
Línea 461: | Línea 490: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
num=1 | num=1 | ||
Línea 535: | Línea 564: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
read -p " | read -p " | ||
Línea 589: | 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 600: | Línea 629: | ||
<code bash> | <code bash> | ||
- | # | + | #!/usr/local/bin/bash |
for i in {1..5} | for i in {1..5} | ||
Línea 611: | 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 639: | Línea 668: | ||
<code bash> | <code bash> | ||
- | #!/bin/bash | + | #!/usr/local/bin/bash |
for nombrefichero in * | for nombrefichero in * | ||
Línea 648: | 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 | ||
+ | </ |