Bash es un intérprete de línea de comandos o Unix Shell y se usa ampliamente en el sistema operativo GNU/Linux. Está escrito por Brian Jhan Fox. Se utiliza como shell de inicio de sesión predeterminado para la mayoría de las distribuciones de Linux. La creación de secuencias de comandos se utiliza para automatizar la ejecución de las tareas para que los humanos no necesiten realizarlas individualmente. Bash scripting es una excelente manera de automatizar diferentes tipos de tareas en un sistema. Los desarrolladores pueden evitar realizar tareas repetitivas utilizando secuencias de comandos de bash.
Las secuencias de comandos Bash admiten variables, declaraciones condicionales y bucles al igual que los lenguajes de programación. A continuación se muestran algunas de las aplicaciones de Bash Scripts:
Aplicaciones de Bash Scripts:
- Manipulación de archivos
- Ejecutar tareas de rutina como la operación de copia de seguridad
- Automatización
Las ventajas de usar Bash Scripts se dan a continuación:
Ventajas de las secuencias de comandos Bash:
- Es simple.
- Ayuda a evitar hacer tareas repetitivas.
- Fácil de usar
- Las tareas realizadas con frecuencia se pueden automatizar
- Una secuencia de comandos se puede ejecutar como un solo comando.
Las desventajas de Bash Scripts se detallan a continuación:
Desventajas de Bash Scripts:
- Cualquier error al escribir puede ser costoso.
- Se lanzó un nuevo proceso para casi todos los comandos de shell ejecutados.
- Velocidad de ejecución lenta
- Problemas de compatibilidad entre distintas plataformas
¿Cómo escribir secuencias de comandos Bash?
Para escribir un Bash Script seguiremos los pasos –
- Primero, crearemos un archivo con la extensión .sh.
- A continuación, escribiremos los scripts de bash dentro de él.
- Después de eso, le daremos permiso de ejecución.
Para crear y escribir un archivo con la extensión .sh podemos usar el editor de texto gedit . El comando para ello será:
gedit scriptname.sh
La primera línea de nuestro archivo de script será:
#!/bin/bash
Esto le dirá al sistema que use Bash para la ejecución. Entonces podemos escribir nuestros propios guiones.
Escribamos solo un script simple que imprimirá algunas líneas en la terminal. El código para ello será –
#!/bin/bash echo "Hello, GeeksforGeeks"
Ahora guardaremos el archivo y le proporcionaremos el permiso de ejecución. Para hacerlo, use el siguiente comando:
chmod +x scriptname.sh
A continuación, para ejecutar el siguiente script, usaremos el siguiente comando:
./scriptname.sh
Aquí está la representación pictórica de la terminal después de ejecutar los comandos anteriores de la siguiente manera:
Aquí el nombre del archivo de script es gfg.sh.
Ahora también podemos escribir comandos más complicados usando Bash Scripts. Aquí hay un ejemplo a continuación en el que estamos usando una declaración de condición:
Guión de ejemplo:
#!/bin/bash Age=17 if [ "$Age" -ge 18 ]; then echo "You can vote" else echo "You cannot vote" fi
Producción:
You cannot vote
Aquí está la representación pictórica del shell del terminal después de ejecutar el script anterior de la siguiente manera:
De la forma anterior, podemos ejecutar varios comandos de Bash a la vez.
Ahora veamos otros conceptos importantes relacionados con Bash Scripting.
Nombres de archivo y permisos
En el ejemplo anterior, guardamos el archivo con el nombre gfg.sh y también proporcionamos permiso de ejecución con el comando chmod . Ahora, entendamos por qué hemos hecho eso.
Mientras escribimos scripts de bash, debemos guardar nuestro archivo con la extensión .sh, para que el sistema Linux pueda ejecutarlo. Cuando creamos por primera vez un archivo con la extensión .sh, no tiene ningún permiso de ejecución y sin el permiso de ejecución, el script no funcionará. Por lo tanto, debemos proporcionarle permiso de ejecución mediante el comando chmod .
El nombre de archivo de un script bash puede ser cualquier cosa, pero por convención, se recomienda usar mayúsculas y minúsculas ( my_bash_script.sh ) o guiones ( my-bash-script.sh ) para nombrar un archivo de script.
Variables
Podemos usar variables en bash scripting. A continuación se muestra un programa de muestra para comprender el uso de variables en los scripts de Bash.
Guión de ejemplo:
Name="SATYAJIT GHOSH" Age=20 echo "The name is $Name and Age is $Age"
Salida de Variables:
The name is SATYAJIT GHOSH and Age is 20
Entonces, aquí se han declarado dos variables Nombre y otra es Edad. Se puede acceder a estas variables mediante $Nombre y $Edad. Eso significa que podemos declarar una variable en un script bash usando VariableName=Value y podemos acceder a ella usando $VariableName. Aquí está la representación pictórica del shell del terminal después de ejecutar el script anterior de la siguiente manera:
Hay dos tipos de variables presentes en Bash Scripting. Convencionalmente, si una variable se declara dentro de una función, generalmente es una variable local y si se declara fuera, entonces es una variable global . En el caso de un script bash, este concepto es un poco diferente, aquí cualquier variable, ya sea que esté escrita dentro o fuera de una función, por defecto es una variable global. Si queremos hacer una variable local, entonces necesitamos usar la palabra clave «local».
Nota: Se recomienda utilizar siempre una variable local dentro de una función para evitar confusiones innecesarias.
Un ejemplo de lo mismo se da a continuación:
Guión de ejemplo:
#!/bin/bash var1="Apple" #global variable myfun(){ local var2="Banana" #local variable var3="Cherry" #global variable echo "The name of first fruit is $var1" echo "The name of second fruit is $var2" } myfun #calling function echo "The name of first fruit is $var1" #trying to access local variable echo "The name of second fruit is $var2" echo "The name of third fruit is $var3"
Salida de variables locales y globales:
The name of first fruit is Apple The name of second fruit is Banana The name of first fruit is Apple The name of second fruit is The name of third fruit is Cherry
Aquí, en este ejemplo anterior, var2 es una variable local, por lo que cuando accedemos desde la función funciona bien, pero cuando intentamos acceder fuera de la función, nos da un resultado vacío en la salida.
Por otro lado, a diferencia de los lenguajes de programación, aunque var3 se define dentro de una función, sigue actuando como una variable global y se puede acceder a ella fuera de la función. A continuación se muestra la representación del shell del terminal después de ejecutar el script:
Entrada y salida
La entrada y la salida son conceptos fundamentales para los scripts de shell. Un script puede tomar una o más entradas y también puede producir cero o muchas salidas. Incluso puede producir algunos errores. Entendamos esto con un ejemplo:
Guión de ejemplo:
echo "Enter filename" read filename if [ -e $filename ] then echo "$filename is exits on the directory" cat $filename else cat > $filename echo "File created" fi
Salida de entrada y salida:
Primera vez:
Enter filename geeks.txt Hello Geek File created
Segunda vez:
Enter filename geeks.txt geeks.txt is exits on the directory Hello Geek
Entonces, en este ejemplo anterior, la primera vez, el script no pudo encontrar ningún archivo con ese nombre de archivo, y se ejecuta el bloque else. Creó el archivo y puso algunos datos en ese archivo. Cuando lo ejecutamos por segunda vez con el mismo nombre de archivo, encuentra el archivo. Entonces, el bloque if se ejecuta y muestra el contenido del archivo. La lectura del contenido del archivo es una entrada y la primera vez que se introducen datos en el archivo se considera una salida. Aquí hemos usado > para almacenar el contenido en un archivo. La notación > se usa para redirigir stdout a un archivo. Por otro lado, podemos usar la notación 2> para redirigir stderr y &> para redirigir tanto stdout como stderr.
A continuación se muestra la representación pictórica de la carcasa del terminal después de ejecutar el siguiente script:
Funciones
En programación, una función es un bloque de código que realiza algunas tareas y se puede llamar varias veces para realizar tareas. El ejemplo más simple del uso de la función en Bash scripting se puede dar como:
Guión de ejemplo:
#!/bin/bash #It is a function myFunction () { echo Hello World from GeeksforGeeks } #function call myFunction
Salida de funciones:
Hello World from GeeksforGeeks
El ejemplo anterior muestra una función que imprime algo cuando se le llama.
Entonces, la sintaxis básica para escribir funciones dentro de un Bash Script será:
Sintaxis de funciones:
#for defining function_name(){ commands ..... } function_name # for calling
Además de esto, también podemos tener funciones con argumentos de paso y con valores de retorno.
Toma de decisiones
En programación, la toma de decisiones es uno de los conceptos importantes. El programador proporciona una o más condiciones para la ejecución de un bloque de código. Si se cumplen las condiciones, solo se ejecuta ese bloque de códigos.
Se utilizan dos tipos de declaraciones de toma de decisiones dentro de los scripts de shell. Están –
1. Declaración if-else:
If else es una declaración condicional. Se puede utilizar para ejecutar dos códigos diferentes en función de si se cumple o no la condición dada.
Hay un par de variedades presentes en la instrucción if-else. Están –
- si-fi
- if-else-fi
- si-elif-else-fi
- if-else anidado
La sintaxis para el más simple será:
Sintaxis de la instrucción If-else:
if [ expression ]; then statements fi
Guión de ejemplo:
Name="Satyajit" if [ "$Name" = "Satyajit" ]; then echo "His name is Satyajit. It is true." fi
Salida de la declaración if-else:
His name is Satyajit. It is true.
En el ejemplo anterior, durante la verificación de la condición, el nombre coincide y la condición se vuelve verdadera. Por lo tanto, se ejecuta el bloque de código presente dentro del bloque if. En caso de que el nombre no coincida, no tendrá una salida. A continuación se muestra la representación pictórica de la carcasa del terminal después de ejecutar el siguiente script:
2. declaración case-sac:
case-sac básicamente funciona igual que la declaración de cambio en la programación. A veces, si tenemos que verificar varias condiciones, puede complicarse el uso de declaraciones if. En esos momentos podemos usar una sentencia case-sac. La sintaxis será –
Sintaxis de la sentencia case-sac:
case $var in Pattern 1) Statement 1;; Pattern n) Statement n;; esac
Guión de ejemplo:
Name="Satyajit" case "$Name" in #case 1 "Rajib") echo "Profession : Software Engineer" ;; #case 2 "Vikas") echo "Profession : Web Developer" ;; #case 3 "Satyajit") echo "Profession : Technical Content Writer" ;; esac
Salida de la declaración case-sac:
Profession : Technical Content Writer
En el ejemplo anterior, la declaración case-sac ejecutó la declaración que es parte del patrón coincidente aquí el ‘Nombre’. A continuación se muestra la representación pictórica de la carcasa del terminal después de ejecutar el siguiente script:
Comparaciones numéricas y de strings
La comparación de strings significa que en el script de shell podemos tomar decisiones haciendo también comparaciones dentro de las strings. Aquí hay una tabla descriptiva con todos los operadores:
Operador | Descripción |
---|---|
== | Devuelve verdadero si las strings son iguales |
!= | Devuelve verdadero si las strings no son iguales |
-norte | Devuelve verdadero si la string a probar no es nula |
-z | Devuelve verdadero si la string a probar es nula |
Los operadores aritméticos se utilizan para verificar las condiciones basadas en la aritmética. Como menor que, mayor que, igual a, etc. Aquí hay una tabla descriptiva con todos los operadores:
Operador | Descripción |
---|---|
-eq | Igual |
-ge | Mayor que o igual |
-gt | Mas grande que |
-le | Menor o igual |
-lt | Menos que |
-nordeste | No es igual |
A continuación se muestra un ejemplo simple de lo mismo:
Guión de ejemplo:
if [ 10 -eq 10 ];then echo "Equal" fi if [ 'Geeks' == 'Geeks' ]; then echo "same" #output else echo "not same" fi
Salida de strings y comparaciones numéricas:
Equal same
En este ejemplo, el primero (-eq) es una comparación numérica que verifica la igualdad. El segundo ( == ) también verifica la igualdad pero en strings. A continuación se muestra la representación pictórica de la carcasa del terminal después de ejecutar el siguiente script:
Aprenderemos más sobre este concepto en los próximos artículos.
Publicación traducida automáticamente
Artículo escrito por satyajit1910 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA