Tutorial de Bash Scripting para principiantes

Bash Scripting Tutorial



El lenguaje de comandos predeterminado de Linux es el script Bash. Necesitamos ejecutar muchos comandos en Linux a diario para muchos propósitos. Estas tareas diarias se pueden automatizar utilizando un script bash. Cualquier usuario puede aprender este lenguaje de secuencias de comandos de forma muy fácil y rápida. Si eres nuevo en la programación bash, este tutorial es para ti.

Contenido:

  1. Comentarios
  2. comando echo
  3. Variables
  4. Sentencia condicional
  5. Bucles
  6. Funciones
  7. Llamar a programas en un script
  8. Crear menús
  9. Procesamiento de línea de comandos
  10. Aritmética
  11. Manipulación de cuerdas
  12. Devolver códigos de retorno de un script y capturar en otro script
  13. Leer y escribir en archivos
  14. Tubería

Comentarios

Agregar comentarios con el código es una parte esencial de cualquier lenguaje de programación. Los comentarios no se analizan con el script en el momento de la ejecución. El lector puede comprender cualquier código correctamente si el código está bien comentado. Puede agregar un comentario de varias formas en el script bash. En esta parte se muestra cómo puede agregar comentarios de una o varias líneas en un script bash. Cree un archivo bash con el siguiente script para conocer el uso del comentario bash. Aquí, el símbolo '#' se usa para agregar un comentario de una sola línea y la comilla simple (') con': 'se usa para agregar comentarios de varias líneas.







bash_comment.sh



#! / bin / bash
#Tome un número como entrada
echo 'Ingrese un numero'
leera
:'
Verifique que el número de entrada sea
menos de 10 o más de 10 o igual a 10
'

si [[ $a -lt 10 ]]
luego
echo 'El número es menor que 10'
elif [[ $a -gt 10 ]]
luego
echo 'El número es mayor que 10'
demás
echo 'El número es igual a 10'
ser

Producción:



Ejecute el script.





$intentobash_comment.sh

Aquí, el script se ejecuta tres veces con el valor de entrada 3, 10 y 90. Aparecerá la siguiente salida.



Si desea saber más sobre los comentarios de bash, puede consultar este tutorial .

Ve arriba

comando de eco

El comando `echo` se usa en bash para imprimir la salida en la terminal. Se pueden usar varias opciones con el comando echo en bash para imprimir la salida de diferentes maneras. Cree un archivo bash con el siguiente script para conocer los dos usos simples del comando `echo`. Aquí, el primer comando `echo` imprimirá datos de texto simple con una nueva línea y el segundo comando echo imprimirá un texto simple sin una nueva línea.

echo_test.sh

#! / bin / bash
#Imprima el primer texto
echo 'Imprimir texto con una nueva línea'
#Imprima el segundo texto
echo -norte 'Imprimir texto sin una nueva línea'

Producción:

Ejecute el script.

$intentoecho_test.sh

La siguiente salida aparecerá después de ejecutar el comando anterior.

Hay muchos otros usos del comando `echo` en bash. Puede consultar este tutorial para saber más sobre el comando `echo`.

Ve arriba

Variables

La declaración de variable es una parte necesaria de cualquier lenguaje de programación. Las variables de bash se pueden declarar de diferentes formas. Cuando se asigna un valor en una variable, no se utiliza ningún símbolo al principio de la variable. El símbolo '$' se usa con el nombre de la variable en el momento de leer el valor de la variable. La variable se puede usar desde la terminal o se puede usar en cualquier script bash.

Los siguientes comandos declararán una variable de cadena llamada mystr con un valor particular y luego imprime el valor de la variable en la terminal.

$mystr='Me gusta la programación bash'
$echo $ mystr

Producción:

Cree un archivo bash con la siguiente secuencia de comandos. Aquí se declaran dos variables. Estos son $a y $b . Si el valor de entrada que se almacena en $a es igual a $b luego el mensaje, Los números son iguales se imprimirá de lo contrario Los números no son iguales se imprimirá.

var.sh

#! / bin / bash
echo 'Ingrese un numero'
leera
b=100
si [[ $a -eq $b ]]
luego
echo 'Los números son iguales'
demás
echo 'Los números no son iguales'
ser

Producción:

Ejecute el script.

$intentovar.sh

El comando anterior se ejecuta dos veces con el valor 56 y 100. Aparecerá la siguiente salida.

Si desea saber más sobre las variables de bash, puede consultar este tutorial .

Ve arriba

Sentencia condicional

Como otro lenguaje de programación, puede usar una declaración condicional en bash. ' Si-entonces-si no ' y ' caso Las declaraciones de 'se utilizan principalmente para implementar declaraciones de condición en cualquier lenguaje de programación. El uso de la declaración condicional mediante el uso de 'si' La declaración se muestra en esta sección de este tutorial. Cree un archivo bash con el siguiente script donde se usa la declaración condicional. Aquí, se tomarán dos valores del usuario como entrada y se almacenarán en las variables, $ código , y $ edad . La sentencia 'si' se utiliza para comprobar el valor de $ edad es mayor o igual a 18 y el valor de la $ código es 1100 . Si ambas condiciones son verdaderas, entonces el mensaje, Eres elegible para ver la película se imprimirá de lo contrario No eres elegible para ver la película. se imprimirá.

cond.sh

#! / bin / bash

echo 'Ingrese su código'
leercódigo
echo 'Introduzca su edad'
leerla edad

si [[ $ edad -dar 18 && $ código -eq '1100' ]]
luego
echo 'Eres elegible para ver la película'
demás
echo 'No eres elegible para ver la película'
ser

Producción:

Ejecute el script.

$intentocond.sh

La siguiente salida aparecerá después de tomar diferentes valores de entrada. 1100 se da como un código y 5 se da como edad para la primera ejecución y si la condición devuelve falso para estos valores. 1100 se da como un código y 45 se da como edad para la segunda ejecución que devuelve verdadero para la condición if.

Si desea saber más sobre la declaración condicional de bash, puede consultar este tutorial.

Ve arriba

Bucles

Cuando algunas partes del script deben ejecutarse varias veces, el ciclo se utiliza para realizar la tarea. Bash admite tres tipos de declaración de bucles como otros lenguajes. Estos son bucles for, while y until. Según los requisitos de programación, se utiliza un bucle particular en el script. Los usos de estos tres tipos de bucles se muestran en esta sección mediante ejemplos sencillos.

Utilizando for loop

Cree un archivo bash con el siguiente script donde ` para` El bucle se utiliza para la iteración. `para` El bucle se utiliza principalmente para iterar una lista de datos o una matriz. Aquí, se usa una lista de nombres de días de la semana y cada nombre de días de la semana se itera usando el bucle for. `si` La declaración se usa para imprimir un mensaje particular basado en el nombre del día de la semana.

for.sh

# Lee el nombre de un día de la semana en cada iteración del ciclo
pordíaenlunes martes Miércoles Jueves Viernes Sábado Domingo
hacer

#Compruebe que el nombre del día de la semana sea lunes o jueves
si [[ $ día=='Lunes' || $ día=='Jueves' ]]
luego
echo 'Reunión en$ díaa las 9:30 am '

#Compruebe que el nombre del día de la semana sea martes, miércoles o viernes
elif [[ $ día=='Martes' || $ día=='Miércoles' || $ día=='Viernes' ]]
luego
echo 'Entrenando en$ díaa las 11:00 am '
demás

#Imprima 'Vacaciones' para otros días
echo '$ díaes vacaciones '
ser
hecho

Producción:

Ejecute el script.

$intentofor.sh

La siguiente salida aparecerá después de ejecutar el script.

Si desea saber más sobre el uso de bash for loop, puede consultar este tutorial.

Usando el bucle while

Cree un archivo bash con el siguiente script donde ` mientras que El bucle se utiliza para la iteración. Este script imprimirá los números del 1 al 20 que son pares y divisibles por 5. Aquí, $ contador La variable se utiliza para controlar la iteración del bucle y el valor de esta variable se incrementa en 1 en cada iteración. Cuando `si` La condición devolverá verdadera, luego imprimirá el valor de $ contador .

#! / bin / bash

#Imprima el mensaje
echo 'Imprime los números que son pares y divisibles por 5'

#Inicializar el contador
encimera=1

#Itere el ciclo hasta que el valor del contador $ sea menor o igual a 20
tiempo [ $ contador -los 20 ]
hacer

#Compruebe que el contador de $ sea divisible entre 2 y 5
si [[ $ contador%2-eq 0 && $ contador%5-eq 0 ]]
luego
#Print $ contador sin nueva línea
echo '$ contador'
ser

#Increment $ contador por 1
((contador ++))
hecho
echo 'Hecho'

Producción:

$intentowhile.sh

Solo hay números entre 1 y 20 que son pares y divisibles por 5. La siguiente salida aparecerá después de ejecutar el script.

Si quieres saber más usos de bash ` while` bucle, entonces puedes comprobar este tutorial .

Usando hasta bucle

Cree un archivo bash con el siguiente script donde ` hasta` El bucle se utiliza para la iteración. Este script imprimirá todos los números impares del 0 al 20. $ n La variable se usa en este script para iterar el ciclo.

until.sh

#! / bin / bash

#Inicializar la variable, n
norte=20

# Repita el ciclo hasta que el valor de $ n sea mayor que 0
Hasta que [ $ n -lt 0 ]
hacer

#Comprueba que el valor de n sea impar
si [[ $ n%2-gt 0 ]]
luego
echo $ n
ser

# Incrementar el valor de n en 1
((norte=$ n-1))
hecho

Producción:

Ejecute el script.

$intentountil.sh

El script imprimirá todos los números pares del 20 al 1. El siguiente resultado aparecerá después de ejecutar el script.

Ve arriba

Funciones

Cuando un bloque de código necesita ejecutarse varias veces en un script, la función se usa para realizar la tarea. Deberá llamar a la función por su nombre solo cuando el script definido en la función deba ejecutarse muchas veces en lugar de agregar el mismo script varias veces. El primer corchete inicial y final se usa con el nombre de la función para declarar la función en el script bash. La función se puede llamar solo con el nombre de la función en bash. Bash no admite argumentos de función como otro lenguaje de programación estándar. Pero el valor se puede pasar a la función bash de una manera diferente a la que se muestra en esta sección. El valor se puede devolver de la función con la declaración de retorno o sin utilizar la declaración de retorno.

Cree un archivo bash con el siguiente script para saber cómo se pueden declarar y llamar a las funciones en el script bash. Se declaran tres funciones en el script. La primera función está declarada para imprimir un mensaje simple, Programación Bash para principiantes . La segunda función se declara para asignar un valor de cadena en una variable, $ return_str que imprimirá, Aprenda a programar en bash con LinuxHint después de llamar a la función. La tercera función se declara para leer un valor de argumento como radio de círculo que se proporcionará en el momento de llamar a la función. Aquí, local se utiliza para leer el valor del argumento. Esta función calculará el área del círculo en función del valor del radio mediante el uso de la fórmula, πr2 e imprima el valor del área calculada.

func.sh

#! / bin / bash

#Declarar una función simple
funciónprint_message()
{
echo 'Programación Bash para principiantes'
}

# Declarar una función para devolver un valor de cadena
funciónret_strdata()
{
#Inicializar la variable con valor de cadena
return_str='Aprenda a programar en bash con LinuxHint'
}

# Declarar una función para leer el valor del argumento
funcióncalcular_área()

# Lee el valor del argumento pasado
local radio=$1
zona=$(echo $ radio*$ radio*3.14

# Llame a la función para imprimir un mensaje simple
print_message

# Llame a la función que asignará un valor de cadena en una variable
ret_strdata

#Imprimir el valor de la variable
echo $ return_str

# Lee el valor del radio
echo 'Ingrese el valor del radio'
leertrabaja

# Llamar a la función con valor de radio
calcular_área$ rad

Producción:

Ejecute el script.

$intentofunc.sh

La siguiente salida aparecerá después de ejecutar el script. Las dos primeras líneas se imprimirán llamando a las funciones, print_message () y ret_strdata () . La última línea se imprimirá llamando a la función, calcular_área () con el valor del radio de entrada tomado.

Si desea saber cómo devolver una cadena de la función bash, puede esta tutoria los.

Ve arriba

Llamar a programas en un script

Puede utilizar muchos tipos de comandos para llamar a otros programas en cualquier script bash, como fuente, bash, eval, ejecutivo , etc. Suponga tres archivos bash, add.sh , subtract.sh, multiply.sh y division.sh creado para realizar sumas, restas, multiplicaciones y divisiones. Aquí, subtract.sh y division.sh leer los argumentos de la línea de comandos. La secuencia de comandos de estos cuatro archivos se proporciona a continuación.

add.sh

#! / bin / bash
a=60
b=40
((resultado=$a+$b))
echo 'La suma de$a+$b=$ resultado'

subract.sh

#! / bin / bash
a=$1
b=$2
((resultado=$a-$b))
echo 'La resta de$a-$b=$ resultado'

multiply.sh

#! / bin / bash
((resultado=$1*$2))
echo 'La multiplicación de $ 1 y $ 2 es$ resultado'

divide.sh

#! / bin / bash
a=$1
b=2
((resultado=$a/$b))
echo 'La división de$apor$bes$ resultado'

Crea un archivo bash llamado, callpro.sh con el siguiente script para llamar a los archivos bash mencionados usando los comandos source, bash, eval y exec. Debe establecer el permiso de ejecución para los cuatro archivos anteriores antes de ejecutar el siguiente script. El comando `source` se usa para llamar add.sh expediente. El comando `bash` se usa para ejecutar el archivo subtract.sh. El comando `eval` se usa para ejecutar el archivo multiply.sh. Se envían dos valores de entrada como argumentos de línea de comando para el comando `eval`. El último comando es el comando exec que funciona solo con la ruta absoluta. Para esto, el nombre de ruta completo del archivo divide.sh se proporciona en el script.

callpro.sh

#! / bin / bash
script1='add.sh'
script2='subtract.sh'
script3='multiply.sh'
script4='/home/fahmida/code/divide.sh'

fuente '$ script1'

intento $ script2 50 20

echo 'Ingrese el valor de a'
leera
echo 'Ingrese el valor de b'
leerb
eval intento $ script3 $a $b
ejecutivo $ script4 30

Producción:

Ejecute el script.

$intentocallpro.sh

La siguiente salida aparecerá después de ejecutar el script.

Ve arriba

Crear menús

Hay un comando útil en bash para crear un menú simple que se llama `seleccionar` mando. Se pueden crear diferentes tipos de menús usando este comando. Se utiliza una lista de datos particular para crear un menú con este comando. Cree un archivo bash con el siguiente código para ver el uso de `seleccionar` comando para crear un menú. En este ejemplo, la lista de cinco elementos se imprimirá como un menú y le pedirá al usuario que elija cualquier idioma de la lista. El valor seleccionado se almacenará en la variable, $ idioma que se imprime más tarde concatenando con otra cadena. El script le pedirá continuamente que seleccione el idioma hasta que el usuario presione 6 para terminar desde el script.

menu.sh

#! / bin / bash

# Imprimir mensaje para el usuario
echo 'Seleccione su idioma favorito'

# Definir la lista de un elemento del menú
SeleccioneidiomaenC# Salida de Java PHP Python Bash
hacer
#Imprimir el valor seleccionado
si [[ $ idioma=='Salida' ]]
luego
Salida 0
demás
echo 'El idioma seleccionado es$ idioma'
ser
hecho

Producción:

Ejecute el script.

$intentomenu.sh

De acuerdo con el siguiente resultado, el usuario presionó 3 por primera vez que imprimió PHP y presionó 6 por segunda vez que terminó el script.

Si desea saber más sobre la creación del menú bash con `select`, puede visitar este tutorial.

Ve arriba

Procesamiento de línea de comandos

A veces necesitamos proporcionar valores de entrada al ejecutar el script desde la línea de comando. Esta tarea se puede realizar de dos formas en bash. Una forma es utilizando variables de argumento y otra forma es utilizando la función getopts. En esta sección se muestra la lectura de datos de entrada de la línea de comando desde el terminal mediante el uso de la variable de argumento.

Cree un archivo bash con la siguiente secuencia de comandos para ver el uso del valor del argumento de la línea de comandos de lectura. Este script leerá tres argumentos de línea de comando que se almacenarán en las variables $ operand1, $ operand2 y $ operador. Para ejecutar el script correctamente, los valores del primer y tercer argumento deben ser el número y el valor del segundo argumento debe ser cualquiera de los cuatro operadores aritméticos ('+', '-', '/', 'x'). si declaración comprobará el valor de $ operator y realizará la operación basándose en el operador e imprimirá el valor.

cl1.sh

#! / bin / bash

# Imprime las variables del argumento
echo 'Los valores de los argumentos son: $ 1 $ 2 $ 3'

# Almacenar valores de argumentos
operand1=$1
operand2=$3
operador=$2

#Compruebe el valor del segundo argumento de comando para realizar la operación aritmética
si [[ $ operador=='+' ]]
luego
((resultado=$operand1+$operand2))
elif [[ $ operador=='-' ]]
luego
((resultado=$operand1-$operand2))
elif [[ $ operador=='x' ]]
luego
((resultado=$operand1*$operand2))
elif [[ $ operador=='/' ]]
luego

((resultado=$operand1/$operand2))
ser

# imprime el resultado
echo -Y 'El resultado es =$ resultado'

Producción:

Ejecute el script.

$intentocl1.sh

El script se ejecuta cuatro veces para cuatro tipos de operadores aritméticos. La siguiente salida aparecerá para los valores de los argumentos, 6 + 3, 6-3, 6 x 3 y 6/3 .

Los valores de los argumentos se pueden pasar con el par nombre-valor en bash. Cree un archivo bash con el siguiente script para mostrar cómo leer los valores de los argumentos con el nombre. El script leerá dos variables de argumento. Los valores de los argumentos con nombre se imprimen en la primera declaración del script. A continuación, se utiliza un bucle for para iterar la matriz que contiene los valores de los argumentos de la línea de comandos. Cada elemento de la matriz se separa en un par clave-valor mediante el comando `cut`. A continuación, la declaración de caso se utiliza para imprimir un mensaje en particular basado en el valor de la clave.

cl2.sh

.#!/soy/intento

# Imprime las variables del argumento
echo 'Los valores de los argumentos son: $ 1 $ 2'

# Lee cada argumento por separado usando for loop
porenfadadoen '[correo electrónico protegido]'
hacer

# Nombre y valor de argumento separados
llave=$(echo $ arg | Corte -f1 -D=)
valor=$(echo $ arg | Corte -f2 -D=)

# Imprimir mensaje basado en el nombre del argumento
caso $ clave en
nombre) echo 'Nombre del estudiante =$ valor';;
Marcos) echo 'Nota obtenida =$ valor' ;;
*)
esac
hecho

Producción:

Ejecute el script con los siguientes argumentos de línea de comando.

$intentocl2.shnombre= Abir HossainMarcos=90

Se proporcionan dos argumentos de línea de comando en los comandos anteriores. Estos son name = Abir Hossain y marca = 90 . nombre y marcas están separados por el script y se imprimen dos valores después de formatear la salida.

Procesar argumentos de la línea de comando usando getopts La función no se trata en este tutorial. Si desea obtener información sobre el procesamiento de la línea de comandos utilizando getopts función, entonces puedes visitar este tutorial .

Ve arriba

Aritmética

Realizar operaciones aritméticas es un requisito común de cualquier lenguaje de programación. Bash realiza la operación aritmética de una manera diferente a otro lenguaje de programación estándar. Hay varias formas de realizar operaciones aritméticas en bash. En esta sección se muestra una de las formas sencillas de realizar la operación aritmética. Cree un archivo bash con la siguiente secuencia de comandos. En este script se muestran cuatro tipos de operaciones aritméticas. Se muestran operaciones simples de suma y división utilizando primeros corchetes dobles al comienzo del script. A continuación, se muestra la operación de preincremento. Finalmente, la forma de utilizar el operador taquigráfico se muestra en la última parte del script.

arith.sh

#! / bin / bash
# Calcula la suma
resultado=$((50+25))
# Imprimir valor de suma
echo 'suma =$ resultado'

# Calcula la división
resultado=$((50/25))
# Imprimir valor de división
echo 'division =$ resultado'

# Asignar un valor a N
norte=10
# Haciendo preincremento
((--NORTE))
# Imprime el valor de N
echo 'Valor después de decremento =$ N'

# Usando operador taquigráfico
((N + =10 ))
# Imprime el valor de N
echo 'Valor después de sumar 10 =$ N'

Producción:

Ejecute el script.

$intentoarith.sh

La siguiente salida aparecerá después de ejecutar el script.

Todas las operaciones aritméticas se realizan utilizando corchetes dobles en este script anterior. Pero puedes usar ' dejar ’, ‘ expr ' y ' antes de Cristo 'Comando para hacer la operación aritmética en bash. Si desea saber más sobre estos comandos para realizar operaciones aritméticas bash, puede visitar este tutorial.

Ve arriba

Manipulación de cuerdas

Se pueden realizar muchos tipos de tareas con los datos de cadena en bash. Algunos concatenan cadenas, comparan cadenas, dividen una cadena, cambian entre mayúsculas y minúsculas, etc. No hay funciones de cadena integradas como otros lenguajes estándar en bash para realizar las operaciones de cadena. En esta sección de este tutorial se analizan algunas manipulaciones comunes de cadenas.

Cadena de concatenación

La suma de dos o más cadenas se denomina concatenación de cadenas. La cuerda se une en bash colocándola una tras otra. Cree un archivo bash con el siguiente script para mostrar el uso de la concatenación de cadenas. Dos variables de cadena se inicializan y se imprimen después de combinar las variables. Aquí, el contenido de $ string1 y $ cadena2 se fusionará e imprimirá.

concat.sh

#! / bin / bash

#Inicializar la primera variable de cadena
cadena1='Me gusta '
#Inicializar la segunda variable de cadena
cadena2='Programación Bash'
# Imprimir después de combinar ambas cadenas
echo '$ string1$ cadena2'

Producción:

Ejecute el script.

$intentoconcat.sh

La siguiente salida aparecerá después de ejecutar el script.

Puede obtener más información sobre la concatenación de cadenas en este tutorial.

Ve arriba

Comparando cadena

Bash utiliza diferentes tipos de operadores para comparar datos de cadenas. Cree un archivo bash con la siguiente secuencia de comandos para mostrar cómo comparar dos datos de cadena. Un valor de cadena se toma como entrada en el script que se compara con otra cadena. Si el valor coincide, entonces un mensaje, Te gusta Python se imprimirá de lo contrario Te gusta PERL se imprimirá.

compare.sh

#! / bin / bash
echoIngrese cualquier valor de cadena
leertexto

#Compruebe que los datos de entrada sean equivalentes a Python
si [ $ texto=='Pitón' ];luego
echo Te gusta Python.
demás
echo 'Te gusta PERL'
ser

Producción:

Ejecute el script.

$intentocompare.sh

La siguiente salida aparecerá después de ejecutar el script donde el valor de entrada es 'PERL'.

Puede obtener más información sobre la comparación de cadenas en este tutorial .

Cadena de división

Bash no tiene ninguna función de división incorporada para dividir datos de cadena. Los datos de la cadena se pueden dividir de varias formas en bash en función de diferentes tipos de delimitadores. Cree un archivo bash con la siguiente secuencia de comandos para mostrar cómo se pueden dividir los datos de cadena en bash. Se toma como entrada un valor de cadena. Este script dividirá el valor de $ texto basado en el espacio. Aquí el IFS La variable se usa para establecer el delimitador. `leer` El comando se usa aquí para dividir el valor del texto y almacenar los valores en una matriz. por El bucle se usa para iterar la matriz e imprimir el valor de cada elemento.

split.sh

#! / bin / bash
#Introducir un valor de cadena
echoIngrese un valor de cadena
leertexto
# Establecer el delimitador
IFS=' '
# Divida el valor de $ text en una matriz basada en el delimitador de espacio
leer -aarr<<< '$ texto'
# Imprime cada valor de la matriz
porvaloren '$ {arr [@]}';
hacer
printf '$ valor orte'
hecho

Producción:

Ejecute el script.

$intentosplit.sh

La siguiente salida aparecerá después de tomar la entrada, Aprenda la programación de Bash . Este valor de entrada es un texto de tres palabras. Entonces, la cuerda se divide en tres partes.

Puede obtener más información sobre la comparación de cadenas en este tutorial .

Cambio de caso de la cuerda

La mayoría de los lenguajes de secuencias de comandos tienen funciones integradas para cambiar el caso de los datos de cadena. Pero el caso de los datos de la cadena se puede cambiar en bash usando `tr` comando o usando ':superior' y ':más bajo' palabras clave. Cree un archivo bash con el siguiente script para conocer las formas de cambiar mayúsculas y minúsculas en bash. Aquí, los primeros datos de la cadena se convierten a mayúsculas usando ‘^^’ símbolo y la segunda cadena se convierte a minúsculas usando `tr` mando. `tr` El comando buscará todas las letras mayúsculas en la cadena y convertirá los caracteres en minúsculas.

case.sh

#! / bin / bash

#Inicializar la primera cadena de datos
Texto 1='[correo electrónico protegido]'

#Imprima el valor de $ text1 convirtiendo todos los caracteres a mayúsculas
echo $ {correo electrónico ^^}

#Inicializar los datos de la segunda cadena
texto2= 'Conceptos básicos de la programación de Bash'

#Imprima el valor de $ text2 convirtiendo todas las mayúsculas a minúsculas
echo $ texto2 | NS [:superior:] [:más bajo:]

Producción:

Ejecute el script.

$intentocase.sh

La siguiente salida aparecerá después de ejecutar el script.

Puede obtener más información sobre la comparación de cadenas en este tutorial .

Ve arriba

Leer datos de cadenas a través del bucle

Los datos de la cadena funcionan como una matriz de caracteres para cualquier lenguaje de programación. Cómo ' por En esta sección se muestra el bucle que se puede usar para leer datos de cadenas en bash. Cree un archivo base con el siguiente script para leer cada parte del valor de la cadena usando for loop.

readstr.sh

#! / bin / bas
# Leer cada palabra de un texto usando for loop
porvalorenProgramación Bashporlos principiantes
hacer
echo $ valor
hecho

Producción:

Ejecute el script.

$intentoreadstr.sh

La siguiente salida aparecerá después de ejecutar el script.

Puede obtener más información sobre la iteración de datos de cadena utilizando el bucle de este tutorial .

Ve arriba

Devolver códigos de retorno de un script y capturar en otro script

Un script bash puede capturar códigos de retorno de otro script llamando al script y usando ‘$?’ para leer el valor de retorno. Supongamos, un archivo bash llamado first.sh devuelve un código después de la ejecución. Crea otro archivo bash llamado second.sh y agregue la siguiente secuencia de comandos para capturar el valor de retorno y realizar algunas otras tareas. El código de ambos archivos se proporciona a continuación. first.sh se llamará el archivo desde second.sh archivo al principio de la secuencia de comandos. first.sh devolverá un código de salida basado en el valor de entrada. second.sh capturará el código por ‘$?’ y comparar con 1. Si ambos valores son iguales, se imprimirá, El número de entrada es mayor que 100 , de lo contrario se imprimirá, El número de entrada es menor o igual que 100 .

first.sh

#! / bin / bash

echo 'Introduzca un valor numérico'
leernorte

# Verifique que el valor de entrada sea menor o igual a 100 o no
si [[ $ n -los 100 ]]
luego
Salida 0
demás
Salida 1
ser

second.sh

#! / bin / bash

#Ejecuta el archivo, first.sh
intento 'first.sh'

#Compruebe que el código de retorno sea igual a 1 o no
si [ $? -eq 1 ]
luego
echo 'El número de entrada es mayor que 100'
demás
echo 'El número de entrada es menor o igual que 100'
ser

Producción:

Ejecute el script.

$intentosecond.sh

La siguiente salida aparecerá cuando el script sea ejecutado por 55 y 110 por dos veces.

Ve arriba

Leer y escribir en archivos

La lectura y escritura de archivos son requisitos comunes de la programación bash. Bash no tiene ninguna función incorporada como otro idioma para leer o escribir el archivo. Hay varias formas de leer el archivo en bash. La forma más común de leer o escribir un archivo en bash es usar `gato` mando. Pero este comando se usa para leer todo el contenido del archivo a la vez. También puede leer cualquier archivo línea por línea utilizando cualquier bucle y `leer` mando. Usando el operador de redireccionamiento, ‘>’ , puede escribir datos en cualquier archivo en bash. Si desea agregar datos a cualquier archivo, debe usar ‘>>’ operador. Las operaciones de lectura y escritura de archivos se muestran en la siguiente parte de esta sección.

Leyendo archivo en bash

Cree un archivo bash con la siguiente secuencia de comandos para leer un archivo existente llamado ' hardware.txt '. El contenido de este archivo se proporciona a continuación. En el script, todo el contenido del archivo es leído por `gato` comando primero y siguiente, while loop se usa para leer el archivo línea por línea.

hardware.txt

Monitor
Teclado
Ratón
Escáner
Impresora

readfile.sh

#! / bin / bash

echo 'Leer archivo usando el comando cat'

# Leer el contenido del archivo usando el comando `cat`
contenido=`gatohardware.txt`
echo $ contenido

echo 'Leer archivo línea por línea usando bucle'

# Asignar el nombre del archivo
nombre del archivo='hardware.txt'

# Cada línea del archivo será leída por cada iteración del ciclo.
tiempo leerlínea;
hacer
# imprime la línea
echo $ línea
hecho<$ nombre de archivo

Producción:

Ejecute los siguientes comandos.

$gatohardware.txt
$intentoreadfile.sh

Aquí, el primer comando imprimirá el contenido del archivo, hardware.txt sin ejecutar ningún script bash y el segundo comando ejecutará el script de readfile.sh e imprima el contenido del archivo dos veces usando `gato` comando y `leer` comando con while loop. Puedes visitar este tutorial para saber más sobre la lectura de archivos línea por línea.

Escribir archivo en bash

Cree un archivo bash con la siguiente secuencia de comandos para escribir contenido nuevo en un archivo nuevo y agregar datos en ese archivo.

writefile.sh

#! / bin / bash

echo 'Ingresa un texto'
# Leer datos de cadena
leerstr1
#Añadir datos de entrada al archivo por primera vez
echo $ str1 >test.txt

echo 'Ingresa otro texto'
# Lee otra cadena de datos
leerstr2
#Añadir datos de entrada al final del archivo
echo $ str2 >>test.txt

#Mostrar el contenido completo del archivo
echo `gatotest.txt`

Producción:

Ejecute el script.

$intentowritefile.sh

La siguiente salida aparecerá después de ejecutar el script.

Ve arriba

Tubería

Pipe se utiliza para redirigir cualquier salida de comando a otra entrada de comando. Se puede utilizar entre diferentes tipos de comandos de bash para generar una salida específica. La entrada estándar está conectada con la salida estándar en Linux por tubería. Debe configurar el comando en secuencia con el símbolo de tubería (|) para obtener la salida deseada. Se pueden ejecutar dos o más comandos juntos en un solo comando usando pipe. Tienes que ejecutar varios comandos en varias líneas sin tubería para hacer la misma tarea. Por lo tanto, el uso de tubería es muy beneficioso para realizar muchos tipos de tareas en una forma breve.

sintaxis:

comando1|comando2|

Aquí, la salida del comando1 se pasará como la entrada del comando2.

El mismo tipo de tarea se realiza con tubería y sin tubería en la siguiente parte de esta sección. Suponga un archivo de texto llamado marks.txt se da con los siguientes datos.

marks.txt

Asraf CSE-409 79

Kabir CSE-304 95

Keya CSE-101 67

Asraf CSE-304 88

Keya CSE-409 90

Asraf CSE-101 92

Tienes que ordenar los datos del archivo y averiguar e imprimir toda la entrada del nombre del alumno 'K sí ' . Puede realizar esta tarea ejecutando varios comandos sin utilizar una tubería que se muestra en la siguiente sección. Los siguientes comandos deberán ejecutarse para obtener el resultado deseado. El primer comando ordenará el archivo. El segundo comando buscará la entrada 'K sí ' usando ` sujeción `comando y almacena la salida en un texto temporal expediente. El tercer comando contará las líneas totales de un temp.txt archivo usando `wc` mando.

$clasificarmarks.txt
$sujeción 'Keya'marks.txt>temp.txt
$WC -lostemp.txt

Producción:

Existen dos entradas del estudiante, 'Keya' en el archivo. Entonces, después de ejecutar los comandos anteriores, aparecerá el siguiente resultado.

Puede fusionar fácilmente los tres comandos anteriores y obtener el mismo resultado ejecutando un solo comando con una tubería que se muestra en el siguiente comando. Aquí no se requiere ningún archivo temporal para obtener la salida. Aquí, la salida del ` clasificar El comando `se pasará como entrada de` sujeción `comando y la salida del` sujeción El comando `se pasará como entrada para el `wc` mando.

$clasificarmarks.txt| sujeción 'Keya' | WC -los

Producción:

Después de ejecutar el comando anterior, obtendrá la siguiente salida como la salida del comando anterior. La salida del comando será 2.

Ve arriba

Conclusión:

Los temas más útiles y necesarios del lenguaje de scripting bash se tratan de cubrir en este tutorial. Espero que el lector se beneficie después de leer este tutorial y pueda escribir un script bash de manera más eficiente.