Cómo crear scripts de shell simples en Linux

Cómo crear scripts de shell simples en Linux

Crear scripts de shell es una de las habilidades más esenciales que los usuarios de Linux deberían tener en la punta de sus dedos. Los scripts de shell juegan un papel enorme en la automatización de tareas repetitivas que de otro modo serían tediosas ejecutando línea por línea.

En este tutorial, destacamos algunas de las operaciones básicas de script de shell que cada usuario de Linux debería tener.

1. Crear un script de shell simple

Un script de shell es un archivo que comprende Ascii texto. Comenzaremos creando un script de shell simple, y para hacer esto, usaremos un editor de texto. Hay una gran cantidad de editores de texto, tanto de línea de comandos como de GUI. Para esta guía, usaremos el editor VIM.

Comenzaremos creando un script simple que se muestra "Hola Mundo"Cuando se ejecuta.

$ vim hola.mierda 

Pegue el siguiente contenido en el archivo y guarde.

#!/bin/bash # imprimir hola mensaje mundial echo "Hola mundo!" 

Pasemos sobre el script de shell línea por línea.

  • La primera línea - #!/bin/bash - se conoce como el encabezado del shebang. Esta es una construcción especial que indica qué programa se utilizará para interpretar el script. En este caso, este será el intento concha indicada por /bin/bash. Hay otros idiomas de secuencias de comandos como Pitón que se denota por #!/usr/bin/python3 y Perl cuyo encabezado de shebang se denota por #!/usr/bin/perl.
  • La segunda línea es un comentario. Un comentario es una declaración que describe lo que un script de shell hace y no se ejecuta cuando se ejecuta el script. Los comentarios siempre están precedidos por el signo hash #.
  • La última línea es el comando que imprime el 'Hola Mundo'Mensaje en la terminal.

El siguiente paso es hacer que el ejecutable de script asigne un permiso de ejecución utilizando el chmod comando como se muestra.

$ chmod +x hola.mierda 

Finalmente, ejecute el script de shell usando cualquiera de los comandos:

$ bash hola.sh o $ ./Hola.mierda 
Crea Hello World Shell Script

2. Uso de declaraciones condicionales para ejecutar código

Como otros lenguajes de programación, declaraciones condicionales se usan en scripting bash para tomar decisiones, con solo una ligera variación en la sintaxis. Vamos a cubrir el si, if-else, y género declaraciones condicionales.

Ejemplo de una instrucción if solamente

El si La declaración se puede usar para probar condiciones simples o múltiples. Comenzaremos con el uso fundamental del si declaración para probar una sola condición. El si la declaración se define por el Si ... Fi bloques.

if comando, entonces declaración FI 

Echemos un vistazo al script de shell a continuación.

#!/bin/bash echo 'ingresar el puntaje' lea x if [[$ x == 70]]; Entonces se hace eco de buen trabajo!'Fi 

El script de shell anterior solicita al usuario que proporcione una puntuación que luego se almacena en una variable X. Si la puntuación corresponde a 70, El script devuelve la salida "Buen trabajo!". El operador de comparación == se usa para probar si se ingresó la puntuación, que se almacena en la variable X, es equivalente a 100.

Si la declaración en el script de shell

Otros operadores de comparación que puede usar incluyen:

  • -ecualización - Igual a
  • -nordeste - No igual a
  • -teniente - Menos que
  • -lealté - Menos que o igual a
  • -teniente - Menos que
  • -ge - Mayor qué o igual a

Por ejemplo, el si estaticar Bloqueo a continuación se imprime 'Trabajo duro'Si la puntuación de entrada es un valor menor que 50.

if [[$ x -lt 50]]; Entonces hacer eco de trabajar más duro!'Fi 
Si la declaración en el script de shell

Ejemplo de una declaración if-else

Para situaciones en las que tiene 2 resultados posibles: - si esto o aquello, la declaración if -else es útil.

if comando entonces declaración1 else Declaración2 FI 

El siguiente script lee la puntuación de entrada y verifica si es mayor o igual a 70.

Si la puntuación es mayor o igual a 70, obtienes un 'Gran trabajo, pasaste!' mensaje. Sin embargo, si el puntaje cae por debajo 70, La salida 'Fallaste'se imprimirá.

#!/bin/bash echo 'ingresar el puntaje' lea x if [[$ x -ge 70]]; Entonces se hace eco de un gran trabajo, pasaste!'else echo' fallaste 'Fi 
Declaración if-else en shell script

Ejemplo de una declaración if-elif-else

En escenarios donde hay múltiples condiciones y diferentes resultados, el if-elif-else Se utiliza la declaración. Esta declaración toma el siguiente formato.

Si la condición1 luego la declaración1 Elif condición2 luego la declaración2 else Declaración3 FI 

Por ejemplo, tenemos un script para una lotería que verifica si el número ingresado es 90, 60 o 30.

#!/bin/bash echo 'ingresar el puntaje' lea x if [[$ x -eq 90]]; Entonces echo "Has ganado el primer premio" Elif [[$ x -eq 60]]; Entonces echo "Has ganado el segundo premio" Elif [[$ x -eq 30]]; Entonces echo "Has ganado el segundo premio" más eco "por favor intente de nuevo" Fi 
Declaración if-elif-else

3. Usando la instrucción if con y lógica

Puedes usar el si declaración junto con el Y operador lógico para ejecutar una tarea si se cumplen dos condiciones. El && El operador se utiliza para denotar el Y lógica.

#!/bin/bash echo 'Ingrese su user_id' lea user_id echo 'por favor ingrese su etiqueta_no' lea tag_id if [[($ user_id == “tecMint” && $ tag_id -eq 3990)]]; Luego se eco de "Iniciar sesión exitoso" de lo contrario "Falla de inicio de sesión" FI 

5. Usando la instrucción if con o lógica

Al usar el O lógica, que está representada por || Símbolo, cualquiera de las condiciones debe satisfacerse con el script para dar los resultados esperados.

#!/bin/bash echo 'Ingrese un número de lectura de número aleatorio' si [[(número -eq 55 || número -eq 80)]]; luego hacer eco de felicitaciones! Has ganado 'de lo contrario', lo siento, inténtalo de nuevo 'Fi 
Si la declaración con o lógica

Usar construcciones de bucle

Intento bucles Permitir a los usuarios realizar una serie de tareas hasta que se logre un cierto resultado. Esto es útil para realizar tareas repetitivas. En esta sección, echaremos un vistazo a algunos de los bucles que también encontrarías en otros lenguajes de programación.

Mientras que el bucle

Este es uno de los bucles más fáciles para trabajar. La sintaxis es bastante simple:

Mientras se hagan los comandos 

El bucle de while a continuación enumera todos los números del 1 al 10 cuando se ejecuta.

#!/bin/bash # un simple while bucle contador = 1 mientras [$ contador 10] do echo $ contador ((contador ++)) listo 

Disculpemos el bucle While:

La variable encimera se inicializa a 1. Y mientras que la variable es menor o igual a 10, El valor del contador se incrementará hasta que se cumpla la condición. La línea echo $ contador Imprime todos los números del 1 al 10.

Mientras que el bucle en el script de shell

En bucle

Como el tiempo bucle, a en bucle se usa para ejecutar el código iterativamente. I.mi. Repita la ejecución del código tantas veces como sea posible definido por el usuario.

La sintaxis es:

para var en 1 2 3 4 5 n do command1 command1 

El en bucle debajo de itera a través de 1 a través de 10 y procesa sus valores en la pantalla.

Para bucle en shell script

Una mejor manera de lograr esto es definir un rango utilizando los aparatos ortopédicos dobles Como se muestra en lugar de escribir todos los números.

#!/bin/bash # especificar el rango en un bucle for para num en 1 ... 10 do echo $ num hecho 

Parámetros posicionales bash

Un parámetro posicional es una variable especial a la que se hace referencia en el script cuando los valores se pasan en el shell pero no se pueden asignar. Parámetros posicionales se ejecutan desde $ 0 $ 1 $ 2 $ 3… a $ 9. Más allá de $ 9 Valor, los parámetros deben estar encerrados en corchetes e.gramo $ 10, $ 11 .. etcétera.

Al ejecutar el script, el primer parámetro posicional que es $ 0 Toma el nombre del script de shell. El $ 1 El parámetro toma la primera variable que se pasa en el terminal, $ 2 Toma el segundo, $ 3 el tercero y así sucesivamente.

Creemos una prueba de script.sh como se muestra.

#!/bin/bash echo "El nombre del guión es:" $ 0 echo "Mi primer nombre es:" $ 1 echo "Mi segundo nombre es:" $ 2 

A continuación, ejecute el script y proporcione el primer y segundo nombre como argumentos:

# Prueba de bash.SH James Kiarie 
Parámetro posicional de Bash

Desde la salida, podemos ver que la primera variable que se imprime es el nombre del script de shell, en este caso, prueba.mierda. A partir de entonces, los nombres se imprimen correspondientes a los parámetros posicionales definidos en el script de shell.

Los parámetros posicionales son útiles, ya que lo ayudan a personalizar los datos que se ingresan en lugar de asignar explícitamente un valor a una variable.

Códigos de salida del comando shell

Comencemos respondiendo una pregunta simple, ¿qué es un código de salida?

Cada comando ejecutado en el shell por un script de usuario o shell tiene un estado de salida. Un estado de salida es un entero.

Un estado de salida de 0 implica que el comando ejecutado con éxito sin ningún error. Cualquier cosa entre 1 a 255 muestra que el comando falló o no se ejecutó con éxito.

Para encontrar el estado de salida de un comando, use el ps? Variable de shell.

Un estado de salida de 1 puntos a un error general o cualquier error inadmisible, como editar archivos sin permisos de sudo.

Un estado de salida de 2 puntos al uso incorrecto de un comando o una variable de shell builtin.

El estado de salida 127 apunta a un comando ilegal que generalmente produce el 'Comando no encontrado' error.

Encontrar el estado de salida de la salida del comando

Procesar la salida de los comandos de shell dentro de un script

En Bash Scripting, puede almacenar la salida de un comando en una variable para uso futuro. Esto también se conoce como sustitución del comando shell y se puede lograr de las siguientes maneras.

variable = $ (comando) o variable = $ (/path/to/command) o variable = $ (argumento del comando 1 argumento 2 ...) 

Por ejemplo, puede almacenar el fecha comando en una variable llamada hoy y llame al script de shell para revelar la fecha actual.

#!/bin/bash hoy = $ (fecha) echo "hoy es $ hoy" 
Fecha de impresión usando script shell

Tomemos otro ejemplo. Supongamos que desea encontrar los usuarios de inicio de sesión válidos en su sistema Linux. ¿Cómo lo harías?? Primero, la lista de todos los usuarios (tanto usuarios del sistema, el proceso y el inicio de sesión) se almacena en el /etc/passwd archivo.

Para ver el archivo, necesitaría usar el comando CAT. Sin embargo, para reducirse para iniciar sesión en los usuarios, use el comando GREP para buscar usuarios con el /bin/bash atribuir y usar el Cortar -C 1-10 comando como se muestra para mostrar los primeros 10 caracteres de los nombres.

Hemos almacenado el comando de gato hacia Login_users variable.

#!/bin/bash login_users = $ (cat/etc/passwd | grep/bin/bash | Cut -c 1-10) echo 'Esta es la lista de usuarios de inicio de sesión: echo $ login_users 
Lista registrada en los usuarios

Esto trae nuestro tutorial sobre la creación de scripts de shell simples. Esperamos que hayas encontrado esto valioso.