Herramientas de usuario

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
tutorial_de_programacion_en_bash [2023/04/07 01:32] – [Funciones] perontutorial_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]], que además cuenta con un  //lenguaje de comandos interpretado// incorporado. Esto te permite escribir [[script|guiones]] y correrlos directamente en tu entorno. [[Bash]] es una [[interpretes de comandos|shell]], que además cuenta con un  //lenguaje de comandos interpretado// incorporado. Esto te permite escribir [[script|guiones]] y correrlos directamente en tu entorno.
  
-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 9: Línea 8:
  
 <code bash> <code bash>
-#!/usr/bin/bash+#!/usr/local/bin/bash
  
 NAME="Tutoriales texto-plano.xyz" NAME="Tutoriales texto-plano.xyz"
Línea 23: Línea 22:
  
 <code bash> <code bash>
-#!/usr/bin/bash+#!/usr/local/bin/bash
  
 #Define una variable global de bash  #Define una variable global de bash 
Línea 54: Línea 53:
 ===Cita con cadena=== ===Cita con cadena===
  
-No existe diferencia al utilizar apóstrofo ''<nowiki>'...'</nowiki>'' o comillas ''"..."'' mientras operas con textos simples y cadenas.+No existe diferencia al utilizar apóstrofo ''<nowiki>'...'</nowiki>'' o comillas ''<nowiki>"..."</nowiki>'' mientras operas con textos simples y cadenas.
  
 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:
  
 <code bash> <code bash>
-#!/usr/bin/bash+#!/usr/local/bin/bash
  
 echo 'Cadena apostrofada' echo 'Cadena apostrofada'
Línea 75: Línea 74:
  
 <code bash> <code bash>
-#!/usr/bin/bash+#!/usr/local/bin/bash
  
 NOMBRE="Bienvenid@ ~$USER" NOMBRE="Bienvenid@ ~$USER"
Línea 100: Línea 99:
  
 <code bash> <code bash>
-#!/usr/bin/bash+#!/usr/local/bin/bash
  
 set -xv   # Esta línea activa el depurado set -xv   # Esta línea activa el depurado
Línea 140: Línea 139:
 ===Ejemplo=== ===Ejemplo===
  
-Escribe un programa para escribir una cadena de texto en ''/etc/fichero_prueba.txt'' y ejecútalo para ver si funciona correctamente:+Escribe un programa para escribir una cadena de texto en ''/tmp/fichero_prueba.txt'' y ejecútalo para ver si funciona correctamente:
  
-<code bash> +<file bash fichero_prueba.txt
-#!/usr/bin/bash+#!/usr/local/bin/bash
    
 echo "Viva Bash, más rápido que un flash!" > /tmp/fichero_prueba.txt echo "Viva Bash, más rápido que un flash!" > /tmp/fichero_prueba.txt
Línea 152: Línea 151:
   echo "Lo siento, no puedo escribir en /tmp/fichero_prueba.txt"   echo "Lo siento, no puedo escribir en /tmp/fichero_prueba.txt"
 fi fi
-</code>+</file>
  
  
Línea 158: Línea 157:
 Este fichero buscará la cadena ''fulana'' en el fichero ''/etc/passwd''. Este fichero buscará la cadena ''fulana'' en el fichero ''/etc/passwd''.
  
-<code bash> +<file bash buscapersona.sh
-#!/usr/bin/bash+#!/usr/local/bin/bash
    
-STRING="fulana"+CADENA="fulana"
    
-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:
 </code> </code>
  
-También podrás indicar algún texto que se presentará a modo de informacióna la hora de solicitar la entrada:+También podrás indicar algún texto con ''-p'', que se presentará a modo de información a la hora de solicitar la entrada:
  
 <code bash> <code bash>
-read -p "Dime tu nombre de usuari@: " miusuario+read -p "Dime tu nombre de usuari@: " tuusuario
 </code> </code>
  
-Podrás utilizar el argumento **-sp** para no mostrar lo que tecleas (útil para guardar secreto en pantalla).+Podrás utilizar el argumento ''-sp'' para no mostrar lo que tecleas (útil para guardar secreto en pantalla).
  
 <code bash> <code bash>
-$ read -sp "Dime de que equipo eres fanátic@: " miequipo+$ read -sp "Dime de que equipo eres fanátic@: " tuequipo
 </code> </code>
  
 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
-#!/usr/bin/bash+#!/usr/local/bin/bash
    
-read -p "Ingresa tu nombre de usuari@: " miusuario +read -p "Ingresa tu nombre de usuari@: " tuusuario 
-read -sp "Dime de qué equipo eres fanátic@: " miequipo+read -sp "Dime en secreto de qué equipo eres fanátic@: " tuequipo
    
-echo -e "\nTu nombre de usuari@ es $miusuario y tu equipo favorito es $miequipo+echo -e "\nTu nombre de usuari@ es $tuusuario y tu equipo favorito es $tuequipo
-</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 ''<nowiki>(())</nowiki>'' para realizar las operaciones aritméticas sobre variables constituidas por valores numéricos, según esta sintaxis:+En Bash podrás encerrar entre //paréntesis dobles// ''<nowiki>((...))</nowiki>'' para realizar las operaciones aritméticas sobre variables constituidas por valores numéricos, según esta sintaxis:
  
 <code bash> <code bash>
-(expresion)) +((expresion)) 
-(variable1+variable2)) +((variable1+variable2)) 
-(variable1-variable2)) +((variable1-variable2)) 
-(variable1*variable2)) +((variable1*variable2)) 
-(variable1/variable2))+((variable1/variable2))
 </code> </code>
  
Línea 226: Línea 225:
  
 <code bash> <code bash>
-#!/usr/bin/bash+#!/usr/local/bin/bash
  
 read -p "Ingresa un valor numérico: " n1 read -p "Ingresa un valor numérico: " n1
Línea 298: Línea 297:
  
 <code bash> <code bash>
-if [ condicion ]+if [ condición ]
 then then
   hacer-algo   hacer-algo
Línea 309: Línea 308:
 Este programa solicita que ingreses una cifra, y te informa si es mayor a ''10''. Este programa solicita que ingreses una cifra, y te informa si es mayor a ''10''.
 <code bash> <code bash>
-#!/usr/bin/bash+#!/usr/local/bin/bash
    
-read -p "Ingrese un valor numérico: " myvar+read -p "Ingrese un valor numérico: " mivariable
    
-if [ $myvar -gt 10 ]+if [ $mivariable -gt 10 ]
 then then
     echo "El valor es mayor que 10"     echo "El valor es mayor que 10"
Línea 326: Línea 325:
  
 <code bash> <code bash>
-#!/usr/bin/bash+#!/usr/local/bin/bash
    
-read -p "Ingresa una cifra: " myvar+read -p "Ingresa una cifra: " mivariable
    
-if [ $myvar -gt 10 ]+if [ $mivariable -gt 10 ]
 then then
     echo "Correcto"     echo "Correcto"
Línea 360: Línea 359:
  
 <code bash> <code bash>
-#!/usr/bin/bash+#!/usr/local/bin/bash
    
 read -p "Ingresa tus calificaciones: " calificacion read -p "Ingresa tus calificaciones: " calificacion
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
-#!/usr/bin/bash+#!/usr/local/bin/bash
    
-read -p "Cuantas copas tiene Boca :" boca +read -p "Cuantas copas tiene Boca :" copasboca 
-read -p "Cuantas copas tiene River :" river +read -p "Cuantas copas tiene River :" copasriver 
-read -p "Cuantas copas tiene Independiente :" independiente+read -p "Cuantas copas tiene Independiente :" copasindependiente
    
-if [ $boca -gt $river ]+if [ $copasboca -gt $copasriver ]
 then then
-    if [ $boca -gt $independiente ]+    if [ $copasboca -gt $copasindependiente ]
     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 -gt $copasindependiente ]
     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 444: Línea 443:
  
 <code bash> <code bash>
-#!/usr/bin/bash+#!/usr/local/bin/bash
  
 while true while true
Línea 455: Línea 454:
  
 <code bash> <code bash>
-#!/usr/bin/bash+#!/usr/local/bin/bash
    
 while true while true
Línea 491: Línea 490:
  
 <code bash> <code bash>
-#!/usr/bin/bash+#!/usr/local/bin/bash
    
 num=1 num=1
Línea 516: Línea 515:
 En este ejemplo el se leerá en bucle línea a línea de ''nombre_fichero.txt'' y asignará el valor a la variable ''mivariable''. En este ejemplo el se leerá en bucle línea a línea de ''nombre_fichero.txt'' y asignará el valor a la variable ''mivariable''.
  
 +__Ver también__: [[while.sh]] (ejemplo ''while-do-done''))
  
 +====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 ''until-do-done''.
 +
 +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 [ "condición lógica" ]
 +do
 +     acción 1
 +     acción 2
 +     acción n
 +done
 +</code>
 +
 +==do y done==
 +
 +Las acciones entre ''do'' y ''done'' se repetirán secuencialmente hasta que se cumpla la "condición lógica". Cuando la "condición lógica" sea verdadera, no se ejecutará ninguna "acción" y finalizará el bucle. 
 +===Ejemplo Do-Done===
 +<code bash>
 +<limite=5
 +i=10;
 +
 +until [ $limite -gt $i ]
 +do
 +     echo Acción $i ejecutada
 +     let i=$i-1
 +done
 +</code>
 +
 +El ejemplo anterior mostraría por pantalla:
 +<code>
 +Acción 10 ejecutada
 +Acción 9 ejecutada
 +Acción 8 ejecutada
 +Acción 7 ejecutada
 +Acción 6 ejecutada
 +Acción 5 ejecutada
 +</code>
 ==== case ==== ==== case ====
  
Línea 565: Línea 607:
  
 <code bash> <code bash>
-#!/usr/bin/bash+#!/usr/local/bin/bash
    
 read -p "Ingresa una cadena:" choice read -p "Ingresa una cadena:" choice
Línea 619: Línea 661:
  
 <code bash> <code bash>
-#!/usr/bin/bash+#!/usr/local/bin/bash
  
 for i in 1 2 3 4 5 for i in 1 2 3 4 5
Línea 630: Línea 672:
  
 <code bash> <code bash>
-#!/usr/bin/bash+#!/usr/local/bin/bash
  
 for i in {1..5} for i in {1..5}
Línea 641: Línea 683:
  
 <code bash> <code bash>
-#!/usr/bin/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 669: Línea 711:
  
 <code bash> <code bash>
-#!/bin/bash+#!/usr/local/bin/bash
    
 for nombrefichero in * for nombrefichero in *
Línea 677: Línea 719:
 </code> </code>
  
 +__Ver también__: [[manzanas.sh]] (Ejemplo bucle ''for-if'')
 ====Funciones==== ====Funciones====
-Una función es una sección de código utilizada para realizar una tarea específica. Estas pueden ser reutilizadas. 
  
->Las funciones también pueden ser llamadas subrutinas o procedimientos.+Una //función// (también llamadas //subrutinas// //procedimientos//) es una sección de código utilizada para realizar una tarea específica. Estas pueden ser reutilizadas.
  
 Sintaxis: Sintaxis:
  
 <code bash> <code bash>
-funcationName(){     +nombreFuncion(){     
-  // scope of function+  // procedimiento de la función
 } }
  
-functionName  //calling of function+nombreFuncion  //llamada a la función
 </code> </code>
  
-==Crear función ==+===Creación de una función ===
  
-Puedes crear tu primer funciçon en un guion de bash mostrando la cadena "Hola Tercer Mundo!"Crea un guión de shell "hola.sh" con el siguiente código fuente:+Crea tu primer función de un guion de bash para que presente la cadena "Hola Texto-plano.xyz!"Elabora el guion de Shell "saludo.sh" con el siguiente código fuente:
  
-<code bash> +<file bash saludo1.sh
-#!/bin/bash+#!/usr/local/bin/bash
  
 funSaludazo(){ funSaludazo(){
Línea 707: Línea 748:
  
 funSaludazo funSaludazo
-</code>+</file>
  
-Ejecuta el guion:+Ejecuta el guion creado:
  
 <code bash> <code bash>
-$ ./script.sh+$ ./saludo1.sh
 </code> </code>
  
 <code>¡Hola texto-plano.xyz!</code> <code>¡Hola texto-plano.xyz!</code>
  
-==Función con argumento== +===Función con argumento===
-Para pasar un argumento a la función debes hacerlo de la misma manera que hacerlo a un comando desde el intérprete de comandos. Las funciones reciben argumentos $1,$2, etcétera. Crea un guion de shell con el siguiente código fuente de bash:+
  
-<code bash> +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 ''$1'', ''$2'', etcétera. En consecuencia, para crear un guion de shell con argumento podrías incluir un código semejante a este: 
-#!/bin/bash+ 
 +<file bash saludo2.sh
 +#!/usr/local/bin/bash
  
 funArgumentos(){ funArgumentos(){
Línea 733: 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>
-$ ./guion.sh+$ ./saludo2.sh
 </code> </code>
  
 <code> <code>
-Primer Argumetno : 1+Primer Argumento : 1
 Segundo Argumento : Bienvenido Segundo Argumento : Bienvenido
 Tercer Argumento : a Tercer Argumento : a
 Cuarto Argumento : Texto-plano.xyz Cuarto Argumento : Texto-plano.xyz
 </code> </code>

Este sitio web utiliza cookies para guardar datos esenciales de su actividad, como su autenticación. Al entrar acepta el uso de cookies.

Más información