Cómo crear un script de Shell en Linux

Shell es una interfaz del sistema operativo. Acepta comandos de los usuarios y los interpreta para el sistema operativo. Si desea ejecutar varios comandos juntos, puede hacerlo creando un script de shell. Los scripts de shell son muy útiles si necesita realizar una tarea de forma rutinaria, como realizar una copia de seguridad. Puede enumerar esos comandos y ejecutarlos todos con un solo script. Veamos cómo puede crear un script de shell y ejecutarlo en Linux.

Creación de un script de shell

Inicie sesión en su máquina Linux y abra el terminal, navegue hasta la carpeta donde desea almacenar el script de shell. Los scripts de shell terminan con la extensión «.sh». Vamos a crear nuestro primer script de shell. Escribir

touch script.sh

Ahora, este archivo de secuencia de comandos no es ejecutable de forma predeterminada, tenemos que dar el permiso ejecutable a este archivo. Escribir

chmod +x script.sh

Ahora, agregaremos algunos comandos a este script de shell. Abra este script de shell con cualquier editor de texto de su elección (basado en línea de comandos o basado en GUI) y agregue algunos comandos. Usaremos nano. Escribir 

nano script.sh

Agregue los siguientes comandos para probar este script de shell

echo This is my first shell script
touch testfile
ls
echo End of my shell script

Guarde los cambios y ejecute el script de shell escribiendo

./script.sh

Captura de pantalla de los pasos anteriores

Puede ver, ejecutó todos los comandos especificados.

Comentarios en el script de shell

Cualquier línea que comience con «#» en el script de shell se trata como un comentario y el shell la ignora durante la ejecución, excepto la línea shebang, que veremos más adelante en este artículo. Veamos un ejemplo. Se crea un script de shell con el siguiente contenido.

# This is a comment
echo Testing comments in shell script

Comentarios en Shell Script

Puedes ver, el comentario es ignorado.

Variables en Shell Script

Sí, los scripts de Shell admiten el uso de variables y no necesitamos definir el tipo de una variable durante su declaración. Hay dos tipos de variables:

  • Variables definidas por el sistema
  • Variables definidas por el usuario.

Las variables definidas por el sistema, también llamadas variables de entorno, generalmente están en mayúsculas. Puede ver todas las variables de entorno actuales mediante el comando printenv. Las variables definidas por el usuario las establece el usuario y solo existen durante la ejecución del script. Puede definir una variable simplemente escribiendo su nombre y asignando un valor con el signo = y acceder a una variable agregando $antes del nombre de la variable. Las variables se muestran en el siguiente script de ejemplo.

# Accessing an Environment Variable
echo $USER

# Creating and accessing User defined Variable
variable_name="Geeksforgeeks"
echo $variable_name

Variables en Shell Script

Definición del intérprete de Shell Script

Hay muchos shells disponibles en Linux, como The Bourne Shell (sh), The Korn Shell (ksh) y GNU Bourne-Again Shell (bash). Los scripts escritos para el shell sh se denominan scripts de shell y pueden ser interpretados por los shells ksh y bash. ksh y Bash son versiones mejoradas del shell sh original y tienen más funciones que sh. Bash es generalmente el shell predeterminado en la mayoría de las distribuciones de Linux y los scripts escritos específicamente para bash shell se denominan scripts bash. 

Puede especificar qué shell usará el script, incluso si el script se ejecuta desde otro terminal de shell. Para hacer esto, agregue «#!» en la parte superior del archivo de script, seguido de la ruta absoluta del shell elegido. Para especificar bash como intérprete, agregue la siguiente línea en la parte superior del script de shell.

#!/bin/bash

Esta línea se llama la línea shebang.

Nota: Esto solo funcionará si bash está instalado en su sistema. 

Operadores de comparación

Puede comparar dos variables en scripts de shell. Hacemos estas comparaciones para tomar decisiones, veremos cómo hacerlo más adelante en este artículo, pero antes de eso, aquí hay una lista de algunos operadores de comparación.

Comparación de enteros

Operador Descripción
-eq es igual a
-nordeste no es igual a
-gt es mayor que
-ge es mayor o igual a
-lt es menos que
-le es menor o igual que

Comparación de strings

Operador Descripción
== es igual a
!= no es igual a
\< es menor que, en orden alfabético ASCII
\> es mayor que, en orden alfabético ASCII

Agregamos \ antes de < y > porque deben escaparse cuando se escriben en la construcción [ ]. Ahora, veamos dónde se usan.

Declaraciones condicionales

Las declaraciones condicionales se utilizan para ejecutar un bloque de código solo cuando se cumplen ciertas condiciones. Los scripts de shell admiten el uso de sentencias condicionales. Usamos operadores de comparación para verificar las condiciones. Veamos algunas declaraciones condicionales.

Si declaración

Comprueba la condición, y si es verdadera, ejecuta los comandos. 

Sintaxis

if [ condition ]
then
#statements
fi

Veamos un ejemplo.

#!/bin/sh
x=10
y=11
if [ $x -ne $y ] 
then
echo "Not equal"
fi

declaración .if

Declaración if-else

En una declaración if-else, puede especificar un conjunto de comandos para ejecutar si no se cumple la condición.

Sintaxis

if [ condition ]
then
#set of statements if the condition is true
else
#set of statements if the condition is false
fi

Veamos un ejemplo

#!/Syntaxbin/sh
x=10
y=10
if [ $x -ne $y ] 
then
echo "Not equal"
else
echo "They are equal"
fi

declaración .if-else

Hay otras sentencias condicionales, puedes leer sobre ellas aquí .

Nota: escriba un espacio después de [y antes] mientras especifica la condición que se verificará; de lo contrario, obtendrá un error.

Bucles

Usando bucles, puede ejecutar un conjunto de comandos una y otra vez, hasta que se cumpla una determinada condición. Veamos algunos de los bucles.

Mientras bucle

Comienza a ejecutar los comandos especificados si la condición es verdadera y los repite hasta que la condición es falsa.

Sintaxis

while [ condition ]
do
#set of statements
done

Veamos un ejemplo.

#!/bin/sh
x=2
while [ $x -lt 6 ]
do
echo $x
x=`expr $x + 1`
done

Mientras bucle

Encerramos una instrucción expr dentro de ` ` cuando la asignamos a una variable. Puede leer sobre el comando expr aquí .

En bucle

En un ciclo for, la variable itera sobre una lista de valores y finaliza cuando no hay más valores para iterar.

Sintaxis

for var in val1 val2 val3
do
#statements
done

Veamos un ejemplo.

#!/bin/sh
for var in 2 4 5 8
do
echo $var
done

en bucle

Puede leer acerca de los bucles en detalle aquí .

Argumentos posicionales

Los argumentos posicionales son los argumentos o valores que pasamos al script de shell mientras se ejecuta el script. Se accede a ellos por las variables $0, $1, $2… $9. Más allá de eso, se les hace referencia mediante ${10}, ${11} y así sucesivamente. $# almacena el número de argumentos pasados ​​y $0 almacena el nombre del script. Veamos un ejemplo para entender todo esto.

#!/bin/sh
echo "No of arguments is $#"
echo "Name of the script is $0"
echo "First argument is $1"
echo "Second argument is $2"

Para pasar los argumentos, simplemente escríbalos en la terminal después del nombre del script como se muestra a continuación.

Argumentos posicionales

Almacenamiento de la salida de los comandos

Puede almacenar la salida de los comandos dentro de una variable en un script de shell. Hay dos formas de hacerlo.

Sintaxis

#Syntax 1
var=$(a valid linux command)
#Syntax 2
var2=`a valid linux command`

Veamos un ejemplo.

#!/bin/sh
b=$(pwd)
c=`pwd`
echo $b
echo $c
d=$(ls /bin | grep bash)
echo $d

Almacenamiento de la salida de los comandos

Códigos de salida de los comandos de shell

Cada vez que un comando finaliza y devuelve el control al proceso principal, devuelve códigos de salida entre 0 y 255. El código de salida 0 significa que el comando fue exitoso y cualquier otro código de salida significa que el comando no tuvo éxito. Puede ver el código de salida después de ejecutar cualquier comando accediendo al #? variable. Vea el ejemplo a continuación.

código de salida del comando de shell

Puede configurar manualmente un código de salida para su script de shell. Esto se puede usar con declaraciones condicionales para transmitir si se logró o no el propósito del script. 

Ejemplo

#!/bin/sh
read x
if [ $x -ne 10 ]
then
echo failed
exit 1
else
echo passed
exit 0
fi

código de salida del comando de shell

Publicación traducida automáticamente

Artículo escrito por jivendrasah y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *