Guía de Bash Script (con ejemplos)
Una herramienta popular de scripts que se encuentra disponible en Unix es Bash —Bourne Again Shell—. Resulta ideal para todo usuario de Linux o administrador de sistemas.
Existen 2 categorías de Unix que son principales de shells:
Shell tipo Bourne
C shell
Bourne shell puede ser catalogada como:
Korn shell (ksh)
Bourne shell (sh)
POSIX shell (sh)
Bourne Again shell (bash)
C shell también puede aparecer además como:
C shell (csh)
TENEX (TOPS) C shell (tcsh)
Los Bash scripts son un componente eficaz e ideal para el desarrollo de sitios web. Reducen tareas cortas y repetitivas a una sola línea. Incluso, puede que se consoliden varios comandos largos en un solo código ejecutable. Bash no necesita instalación adicional y está disponible en muchas versiones de Linux. Escribiendo este comando:
cat /etc/shells
podremos verificar la lista de shells disponibles.
El resultado nos dará algo como lo siguiente:
/bin/bash
/bin/sh
/bin/tcsh
/bin/csh
¿Usar scripts Bash? ¿Por qué?
Las funciones Bash presentan varias ventajas. Entre ellas:
Eliminan tareas repetitivas
Ahorran tiempo
Proveen una secuencia de actividades estructurada, modular y formateada
Los scripts proporcionan valores dinámicos a comandos, usando argumentos de línea de comando
Simplifican comandos difíciles en una sola unidad en ejecución
Una vez creado, se puede realizar cualquier cantidad de veces por cualquier persona. De modo que se construye una vez y ejecuta muchas veces
Los flujos lógicos se pueden realizar utilizando funciones bash
Las funciones Bash es factible realizarlas al inicio del servidor o incorporando un cron job programado
Los comandos tienen la opción de ser perfeccionados
Puede tener comandos de shell dinámicos.
Bash resulta un gran recurso para facilitar tu trabajo y mejorar tus proyectos. Sus potenciales usos son ilimitados.
Comenzar con Bash
Consultá las páginas del manual de bash escribiendo:
man bash
para comenzar con las opciones básicas de los comandos.
Luego, creamos un archivo “.sh.”. Para esto implementaremos “VIM Editor”. Para crear un archivo, usá un comando como:
vim sampleFunction.sh
Ahora iremos al archivo “.sh”, donde editaremos. Esto producirá un resultado con los comandos Bash y su uso. Los scripts de bash en Linux deben comenzar en esta línea:
#!/bin/bash
El comando siguiente muestra la ruta del script bash. which bash
Ello exhibirá este resultado:
/bin/bash
La sintaxis común de bash sería:
function functionName {
first command
second command
}
También es posible escribir así:
functionName (){
first command
second command
}
En una sola línea, sería:
functionName() { first command; second command; }
Un ejemplo de dicha función donde primero creamos un directorio y después cambiamos la ruta para que apunte al nuevo directorio, sería el siguiente:
sampleFunction () { mkdir -p $1 cd $1 }
El argumento de entrada de la línea de comando representa $1$ Bash puede hacer entradas dinámicas dentro del comando. Para verificar esta función, ejecutá de esta manera:
sampleFunction myDir
Este “myDir” es un nombre de directorio válido. Si examinás el directorio de trabajo actual utilizando como comando “pwd”, verás que estás dentro del “myDir” realizado recientemente.Aunque cualquier comando de uso común se puede agregar como una función bash.
Recordá que cuando hayas finalizado de usar el editor “VIM” para editar el archivo “.sh”, podés guardar y salir pulsando ESC para ingresar al modo de comando, y escribir: “wq” para guardar y salir.
Funciones básicas de Bash
Uno de los ejemplos primordiales de la función bash en Linux se muestra a continuación:
#!/bin/bash
testfunction(){
echo "My first function"
}
testfunction
Si guardás este script en “testFunction.sh” y lo ejecutás como “./testFunction.sh”, podrás ver el resultado como:
My first function
Luego se imprime la salida en la consola. Pero generará un error si intercambiás la posición de la definición de la función con la llamada. El fragmento siguiente dará un error:
#!/bin/bash”
testfunction
testfunction(){
echo "My first function
}
Entonces tendrás que definir la función y luego invocarla. Cualquier número de parámetros es aceptado por las funciones bash. El ejemplo a continuación toma dos parámetros:
#!/bin/bash
testfunction(){
echo $1
echo $2
}
testfunction "Hello" "World”
Es válido usar entradas dinámicas y realizar funciones bash. Uno de estos ejemplos es el que se muestra aquí:
#!/bin/bash
addition(){
sum=$(($1+$2))
return $sum
}
read -p "Enter a number: " int1
read -p "Enter a number: " int2
add $int1 $int2
echo "The result is : " $?
En el ejemplo realizado, el valor de “addition” se asigna en una suma variable, y esto es lo que entrega la función. La entrada interactiva se prueba usando “read” para ambos números. Al final, el resultado se imprime con “$?” que almacena el valor “$sum” generado por la función.
Las funciones bash devuelven constantemente un único valor. Sirve mantener comentarios dentro del archivo agregando el símbolo “#” para dejar notas útiles. Los scripts bash resisten:
Bucle while
Bucle for
Declaración if
Elemento lógico and
Elemento lógico or
Declaración Else If
Declaración case
Aquí se muestra un breve ejemplo del bucle while:
#!/bin/bash
isvalid=true
count=1
while [ $isvalid ]
do
echo $count
if [ $count -eq 5 ];
then
break
fi
((count++))
done
El ejemplo anterior implementa las declaraciones while e if. Esto realiza el bucle while 5 veces antes de salir, luego de verificar la declaración condicional if.
El resultado, a continuación:
1 2 3 4 5
El bucle for puede usarse para aumentar o disminuir los contadores. Un ejemplo del bucle for es el siguiente:
#!/bin/bash
for (( count=10; count>0; count-- ))
do
echo -n "$count "
done
La salida de este bucle será:
10 9 8 7 6 5 4 3 2 1
En Bash, “&&” simboliza el elemento lógico “AND”, mientras que “||” representa a “OR”.
Con las declaraciones“If” también definimos “Else if”, como a continuación:
#!/bin/bash
echo "Enter a valid number"
read n
if [ $n -eq 101 ];
then
echo "This is first number"
elif [ $n -eq 510 ];
then
echo " This is second number "
elif [ $n -eq 999 ];
then
echo " This is third number "
else
echo "No numbers over here"
fi
El mismo ejemplo anterior se puede también tipear utilizando la declaración case como se muestra aquí:
#!/bin/bash
echo " Enter a valid number"
read n
case $n in
101)
Echo " This is the first number " ;;
510)
echo " This is the second number " ;;
999)
echo " This is the third number " ;;
*)
echo " No numbers over here " ;;
esac
En las explicaciones, “case” representa una ruptura de case.
Última actualización