Los scripts Bash se pueden usar para varios propósitos, como ejecutar un comando de shell, ejecutar varios comandos juntos, personalizar tareas administrativas, realizar automatización de tareas, etc. Por lo tanto, el conocimiento de los conceptos básicos de programación bash es importante para todos los usuarios de Linux. Este artículo le ayudará a tener una idea básica sobre la programación bash. La mayoría de las operaciones comunes de las secuencias de comandos bash se explican con ejemplos muy simples aquí.
En este artículo se tratan los siguientes temas de programación bash.
- Hola Mundo
- Comando de eco
- Comentarios
- Comentario de varias líneas
- Mientras bucle
- En bucle
- Obtener información del usuario
- Si declaración
- Y condición si declaración
- O Condición si declaración
- Else if y condición else
- Condición del caso
- Obtener argumentos desde la línea de comandos
- Obtener argumentos de la línea de comando con nombres
- Combinar dos cadenas en una variable
- Obtener subcadena de cadenas
- Suma 2 números en una variable
- Crear una función
- Usar parámetros de función
- Pasar el valor de retorno de la secuencia de comandos
- Hacer directorio
- Hacer directorio comprobando existencia
- Leer un archivo
- Eliminar un archivo
- Agregar al archivo
- Prueba si el archivo existe
- Enviar ejemplo de correo electrónico
- Obtener Parse Fecha actual
- Espere el comando
- Comando de sueño
Cree y ejecute el primer programa BASH:
Puede ejecutar el script bash desde la terminal o ejecutando cualquier archivo bash. Ejecute el siguiente comando desde la terminal para ejecutar una instrucción bash muy simple. La salida del comando será ' Hola Mundo ’.
$echo 'Hola Mundo'
Abra cualquier editor para crear un archivo bash. Aquí, nano El editor se utiliza para crear el archivo y el nombre del archivo se establece como ' First.sh ’
$nanoFirst.sh
Agregue el siguiente script bash al archivo y guárdelo.
#! / bin / bashecho 'Hola Mundo'
Puede ejecutar el archivo bash de dos formas. Una forma es usar el comando bash y otra es configurar el permiso de ejecución para ejecutar el archivo bash y ejecutar el archivo. Aquí se muestran ambas formas.
$intentoFirst.shO,
$chmoda + x First.sh$ ./First.sh
Uso del comando echo:
Puede usar el comando echo con varias opciones. Algunas opciones útiles se mencionan en el siguiente ejemplo. Cuando usa ' echo 'Sin ninguna opción, se agrega una nueva línea de forma predeterminada. '-norte' La opción se utiliza para imprimir cualquier texto sin una nueva línea y '-Y' La opción se utiliza para eliminar los caracteres de barra invertida de la salida. Cree un nuevo archivo bash con un nombre ' echo_example.sh 'Y agregue la siguiente secuencia de comandos.
#! / bin / bashecho 'Impresión de texto con nueva línea'
echo -norte 'Impresión de texto sin nueva línea'
echo -Y ' orteEliminando tbarra invertida tcaracteres orte'
Ejecute el archivo con el comando bash.
$intentoecho_example.sh
Uso de comentario:
‘#’ El símbolo se usa para agregar comentarios de una sola línea en el script bash. Cree un nuevo archivo llamado ' comment_example.sh ' y agregue la siguiente secuencia de comandos con un comentario de una sola línea.
#! / bin / bash# Suma dos valores numéricos
((suma=25+35))
#Imprima el resultado
echo $ suma
Ejecute el archivo con el comando bash.
$intentocomment_example.sh
Uso del comentario de varias líneas:
Puede utilizar el comentario de varias líneas en bash de varias formas. En el siguiente ejemplo se muestra una forma sencilla. Crea un nuevo bash llamado, 'Multiline-comment.sh' y agregue el siguiente script. Aquí, ‘:’ y ’ los símbolos se utilizan para agregar comentarios de varias líneas en el script bash. Este siguiente script calculará el cuadrado de 5.
#! / bin / bash:'
El siguiente script calcula
el valor cuadrado del número, 5.
'
((zona=5*5))
echo $ area
Ejecute el archivo con el comando bash.
$intentomultiline-comment.sh
Puede consultar el siguiente enlace para saber más sobre el uso del comentario bash.
https://linuxhint.com/bash_comments/
Uso de While Loop:
Crea un archivo bash con el nombre, 'While_example.sh', saber el uso de tiempo círculo. En el ejemplo, tiempo bucle iterará para 5 veces. El valor de contar la variable se incrementará en 1 en cada paso. Cuando el valor de contar variable será 5 entonces la tiempo El bucle terminará.
#! / bin / bashválido=cierto
contar=1
tiempo [ $ válido ]
hacer
echo $ count
si [ $ count -eq 5 ];
luego
rotura
ser
((contar ++))
hecho
Ejecute el archivo con el comando bash.
$intentowhile_example.sh
Puede consultar el siguiente enlace para saber más sobre el uso de while loop.
https://linuxhint.com/bash-while-loop-examples/
Utilizando For Loop:
Lo básico por La declaración de bucle se muestra en el siguiente ejemplo. Cree un archivo llamado ' for_example.sh 'Y agregue la siguiente secuencia de comandos usando por círculo. Aquí, por bucle iterará para 10 veces e imprime todos los valores de la variable, encimera en una sola línea.
#! / bin / bashpor (( encimera=10; encimera>0; encimera--))
hacer
echo -norte '$ contador'
hecho
printf ' orte'
Ejecute el archivo con el comando bash.
$intentofor_example.sh
Puede usar for loop para diferentes propósitos y formas en su script bash. Puede consultar el siguiente enlace para saber más sobre el uso de for loop.
https://linuxhint.com/bash-for-loop-examples/
Obtener información del usuario:
‘ leer El comando 'se usa para recibir información del usuario en bash. Cree un archivo llamado ' user_input.sh 'Y agregue la siguiente secuencia de comandos para recibir información del usuario. Aquí, un valor de cadena se tomará del usuario y mostrará el valor combinando otro valor de cadena.
#! / bin / bashecho 'Introduzca su nombre'
leernombre
echo 'Bienvenido$ nombrea LinuxHint '
Ejecute el archivo con el comando bash.
$intentouser_input.sh
Puede consultar el siguiente enlace para saber más sobre el uso de la entrada del usuario.
https://linuxhint.com/bash-script-user-input/
Usando la declaración if:
Puede usar if condición con condiciones únicas o múltiples. El bloque inicial y final de esta declaración se define mediante 'si' y 'ser' . Cree un archivo llamado ' simple_if.sh 'Con la siguiente secuencia de comandos para conocer el uso si declaración en bash. Aquí, 10 se asigna a la variable, norte . si el valor de $ n es menor que 10, entonces la salida será Es un número de un dígito , de lo contrario la salida será Es un número de dos dígitos. . Para comparacion, '-Lt' se utiliza aquí. A modo de comparación, también puede utilizar '-Eq' por igualdad , '-Nació' por no igualdad y '-Gt' por mas grande que en script bash.
#! / bin / bashnorte=10
si [ $ n -lt 10 ];
luego
echo 'Es un número de un dígito'
demás
echo 'Es un número de dos dígitos'
ser
Ejecute el archivo con el comando bash.
$intentosimple_if.sh
Usando la declaración if con lógica AND:
Se pueden usar diferentes tipos de condiciones lógicas en una instrucción if con dos o más condiciones. ¿Cómo puede definir múltiples condiciones en la declaración if usando Y La lógica se muestra en el siguiente ejemplo. ‘&&’ se usa para aplicar Y lógica de si declaración. Crea un archivo llamado 'If_with_AND.sh' para comprobar el siguiente código. Aquí, el valor de nombre de usuario y contraseña las variables se tomarán del usuario y se compararán con ' administración ' y ' secreto '. Si ambos valores coinciden, la salida será usuario valido , de lo contrario la salida será usuario invalido .
!/soy/intentoecho 'Introduzca su nombre de usuario'
leernombre de usuario
echo 'Introducir la contraseña'
leercontraseña
si [[ ( $ nombre de usuario=='administración' && $ contraseña=='secreto' ) ]];luego
echo 'usuario válido'
demás
echo 'usuario invalido'
ser
Ejecute el archivo con el comando bash.
$intentoif_with_AND.sh
Usando la declaración if con lógica OR:
‘ || 'Se utiliza para definir O lógica en si condición. Crea un archivo llamado 'If_with_OR.sh' con el siguiente código para comprobar el uso de O lógica de si declaración. Aquí, el valor de norte será tomado del usuario. Si el valor es igual a 15 o 45 entonces la salida será Ganaste el juego , de lo contrario la salida será Perdiste el juego .
#! / bin / bashecho 'Ingrese cualquier número'
leernorte
si [[ ( $ n -eq 15 || $ n -eq 45 ) ]]
luego
echo 'Ganaste el juego'
demás
echo 'Perdiste el juego'
ser
Ejecute el archivo con el comando bash.
$intentoif_with_OR.sh
Usando la declaración else if:
El uso de si no La condición es un poco diferente en bash que en otros lenguajes de programación. ' elif 'Se utiliza para definir si no condición en bash. Cree un archivo llamado ' elseif_example.sh 'Y agregue la siguiente secuencia de comandos para comprobar cómo si no se define en el script bash.
#! / bin / bashecho 'Ingrese su número de la suerte'
leernorte
si [ $ n -eq 101 ];
luego
echo 'Tienes el 1er premio'
elif [ $ n -eq 510 ];
luego
echo 'Tienes el 2do premio'
elif [ $ n -eq 999 ];
luego
echo 'Tienes el 3er premio'
demás
echo 'Lo siento, inténtalo la próxima vez'
ser
Ejecute el archivo con el comando bash.
$intentoelseif_example.sh
Uso de la declaración de caso:
Caso declaración se utiliza como la alternativa de if-elseif-else declaración. El bloque inicial y final de esta declaración está definido por ' caso ' y ' esac '. Cree un nuevo archivo llamado ' case_example.sh 'Y agregue la siguiente secuencia de comandos. La salida del siguiente script será la misma que la anterior. si no ejemplo.
#! / bin / bashecho 'Ingrese su número de la suerte'
leernorte
caso $ n en
101)
echo echo 'Tienes el 1er premio' ;;
510)
echo 'Tienes el 2do premio' ;;
999)
echo 'Tienes el 3er premio' ;;
*)
echo 'Lo siento, inténtalo la próxima vez' ;;
esac
Ejecute el archivo con el comando bash.
$intentocase_example.sh
Obtenga argumentos de la línea de comandos:
El script Bash puede leer la entrada desde el argumento de la línea de comandos como cualquier otro lenguaje de programación. Por ejemplo, $1 y $2 Las variables se utilizan para leer los argumentos de la primera y segunda línea de comandos. Crea un archivo llamado command_line.sh y agregue el siguiente script. Dos valores de argumentos leídos por el siguiente script e imprimen el número total de argumentos y los valores de los argumentos como salida.
#! / bin / bashecho 'Total de argumentos: $ #'
echo 'Primer argumento = $ 1'
echo 'Segundo argumento = $ 2'
Ejecute el archivo con el comando bash.
$intentocommand_line.sh Sugerencia de Linux
Puede consultar el siguiente enlace para saber más sobre el uso del argumento de línea de comando.
https://linuxhint.com/command_line_arguments_bash_script/
Obtenga argumentos de la línea de comando con nombres:
En el siguiente script se muestra cómo puede leer los argumentos de la línea de comandos con nombres. Cree un archivo llamado ' command_line_names.sh ’ y agregue el siguiente código. Aquí, dos argumentos, X y Y son leídos por este script e imprimen la suma de X e Y.
#! / bin / bashporenfadadoen '[correo electrónico protegido]'
hacer
índice=$(echo $ arg | Corte -f1 -D=)
horas=$(echo $ arg | Corte -f2 -D=)
caso $ índice en
X) x=$ horas;;
Y) y=$ horas;;
*)
esac
hecho
((resultado=x+y))
echo 'X+Y=$ resultado'
Ejecute el archivo con el comando bash y con dos argumentos de línea de comando.
$intentocommand_line_namesX=45 Y=30
Combinar variables de cadena:
Puede combinar fácilmente variables de cadena en bash. Crea un archivo llamado string_combine.sh y agregue el siguiente script para verificar cómo puede combinar variables de cadena en bash colocando las variables juntas o usando ‘+’ operador.
#! / bin / bashcadena1='Linux'
cadena2='Insinuación'
echo '$ string1$ cadena2'
string3=$ string1+$ cadena2
cadena3 + ='es un buen sitio de blogs de tutoriales'
echo $ string3
Ejecute el archivo con el comando bash.
$intentostring_combine.sh
Obtener la subcadena de String:
Al igual que otros lenguajes de programación, bash no tiene una función incorporada para recortar el valor de cualquier cadena de datos. Pero puede realizar la tarea de subcadena de otra manera en bash que se muestra en el siguiente script. Para probar la secuencia de comandos, cree un archivo llamado ' substring_example.sh ’Con el siguiente código. Aquí, el valor, 6 indica el punto de partida desde donde comenzará la subcadena y 5 indica la longitud de la subcadena.
#! / bin / bashStr='Aprenda Linux de LinuxHint'
subStr=$ {Str: 6: 5}
echo $ subStr
Ejecute el archivo con el comando bash.
$intentosubstring_example.sh
Suma dos números:
Puede realizar las operaciones aritméticas en bash de diferentes formas. En el siguiente script se muestra cómo puede agregar dos números enteros en bash usando corchetes dobles. Cree un archivo llamado ' add_numbers.sh ’Con el siguiente código. Se tomarán dos valores enteros del usuario y se imprimirá el resultado de la suma.
#! / bin / bashecho 'Ingrese el primer número'
leerx
echo 'Ingrese el segundo número'
leery
(( suma=x+y))
echo 'El resultado de la suma =$ suma'
Ejecute el archivo con el comando bash.
$intentoadd_numbers.sh
Puede consultar el siguiente enlace para saber más sobre la aritmética de bash.
https://linuxhint.com/bash_arithmetic_operations/
Crear función:
En el siguiente script se muestra cómo puede crear una función simple y llamar a la función. Cree un archivo llamado ' function_example.sh 'Y agregue el siguiente código. Puede llamar a cualquier función solo por su nombre sin usar ningún corchete en el script bash.
#! / bin / bashfunciónF1()
{
echo 'Me gusta la programación bash'
}
F1
Ejecute el archivo con el comando bash.
$intentofunction_example.sh
Crear función con parámetros:
Bash no puede declarar parámetros o argumentos de la función en el momento de la declaración de la función. Pero puede usar parámetros en función usando otra variable. Si se pasan dos valores en el momento de la llamada a la función, entonces se utilizan las variables $ 1 y $ 2 para leer los valores. Cree un archivo llamado ' función | _parameter.sh 'Y agregue el siguiente código. Aquí, la función ' Rectangle_Area ' calculará el área de un rectángulo basándose en los valores de los parámetros.
#! / bin / bashRectangle_Area() {
zona=$(($1 * $2))
echo 'El área es:$ area'
}
Rectangle_Area10 20
Ejecute el archivo con el comando bash.
$intentofunction_parameter.sh
Pasar el valor de retorno de la función:
La función Bash puede pasar valores numéricos y de cadena. En el siguiente ejemplo se muestra cómo puede pasar un valor de cadena desde la función. Cree un archivo llamado ' function_return.sh 'Y agregue el siguiente código. La función, saludo() devuelve un valor de cadena en la variable, horas que se imprime más tarde combinándolo con otra cuerda.
#! / bin / bashfunciónsaludo() {
pag='Hola,$ nombre'
echo $ str
}
echo 'Introduzca su nombre'
leernombre
horas=$(saludo)
echo 'El valor de retorno de la función es$ horas'
Ejecute el archivo con el comando bash.
$intentofunction_return.sh
Puede consultar el siguiente enlace para saber más sobre el uso de la función bash.
https://linuxhint.com/return-string-bash-functions/
Hacer directorio:
Bash usa ' mkdir 'Comando para crear un nuevo directorio. Cree un archivo llamado ' make_directory.sh 'Y agregue el siguiente código para tomar un nuevo nombre de directorio del usuario. Si el nombre del directorio no existe en la ubicación actual, se creará el directorio; de lo contrario, el programa mostrará un error.
#! / bin / bashecho 'Ingrese el nombre del directorio'
leernewdir
`mkdir $ newdir`
Ejecute el archivo con el comando bash.
$intentomake_directory.sh
Haga un directorio comprobando la existencia:
Si desea verificar la existencia de directorio en la ubicación actual antes de ejecutar el ' mkdir ', Entonces puede usar el siguiente código. '-D La opción 'se usa para probar si un directorio en particular existe o no. Cree un archivo llamado ' directory_exist.sh ’ y agregue el siguiente código para crear un directorio verificando la existencia.
#! / bin / bashecho 'Ingrese el nombre del directorio'
leerndr
si [ -D '$ ndir' ]
luego
echo 'El directorio existe'
demás
`mkdir $ ndir`
echo 'Directorio creado'
ser
Ejecute el archivo con el comando bash.
$intentodirectory_exist.sh
Puede consultar el siguiente enlace para saber más sobre la creación de directorios.
https://linuxhint.com/bash_mkdir_not_existent_path/
Leer un archivo:
Puede leer cualquier archivo línea por línea en bash usando loop. Cree un archivo llamado ' read_file.sh 'Y agregue el siguiente código para leer un archivo existente llamado' book.txt ’.
#! / bin / bashexpediente='libro.txt'
tiempo leerlínea;hacer
echo $ línea
hecho < $ archivo
Ejecute el archivo con el comando bash.
$intentoread_file.shEjecute el siguiente comando para verificar el contenido original de ' book.txt ' expediente.
$gatobook.txt
Puede consultar el siguiente enlace para conocer las diferentes formas de leer el archivo.
https://linuxhint.com/read_file_line_by_line_bash/
Eliminar un archivo:
‘ rm El comando 'se usa en bash para eliminar cualquier archivo. Cree un archivo llamado ' delete_file.sh ’Con el siguiente código para tomar el nombre de archivo del usuario y eliminarlo. Aquí, '-I' La opción se utiliza para obtener permiso del usuario antes de eliminar el archivo.
#! / bin / bashecho 'Ingrese el nombre del archivo para eliminar'
leerfn
rm -I $ fn
Ejecute el archivo con el comando bash.
$ls$intentodelete_file.sh
$ls
Agregar al archivo:
Se pueden agregar nuevos datos a cualquier archivo existente usando ‘>>’ operador en bash. Crea un archivo llamado 'Append_file.sh 'Y agregue el siguiente código para agregar contenido nuevo al final del archivo. Aquí, ' Aprendiendo Laravel 5 'Se añadirá al de' book.txt ' archivo después de ejecutar el script.
#! / bin / bashecho 'Antes de adjuntar el archivo'
gatobook.txt
echo 'Aprendiendo Laravel 5'>>book.txt
echo 'Después de adjuntar el archivo'
gatobook.txt
Ejecute el archivo con el comando bash.
$intentoappend_file.sh
Prueba si el archivo existe:
Puede verificar la existencia de un archivo en bash usando '-Y' o '-F' opción. '-F' La opción se utiliza en el siguiente script para probar la existencia del archivo. Cree un archivo llamado ' file_exist.sh 'Y agregue el siguiente código. Aquí, el nombre del archivo pasará desde la línea de comando.
#! / bin / bashnombre del archivo=$1
si [ -F '$ nombre de archivo' ];luego
echo 'El archivo existe'
demás
echo 'El archivo no existe'
ser
Ejecute los siguientes comandos para verificar la existencia del archivo. Aquí, book.txt el archivo existe y libro2.txt no existe en la ubicación actual.
$ls$intentofile_exist.sh book.txt
$intentofile_exist.sh book2.txt
Enviar correo electrónico:
Puede enviar correo electrónico mediante ' correo ' o ' enviar correo 'Comando. Antes de usar estos comandos, debe instalar todos los paquetes necesarios. Cree un archivo llamado ' mail_example.sh 'Y agregue el siguiente código para enviar el correo electrónico.
#! / bin / bashRecipiente= admin@example.com
Tema= Saludo
Mensaje= Bienvenido a nuestro sitio
`correo-s $ Asunto $ Destinatario <<< $ Mensaje`
Ejecute el archivo con el comando bash.
$intentomail_example.sh
Obtener Parse Fecha actual:
Puede obtener el valor actual de la fecha y hora del sistema usando ` fecha `comando. Cada parte del valor de fecha y hora se puede analizar mediante ' Y ',' m ',' d ',' H ',' M ' y ' S' . Cree un nuevo archivo llamado ' date_parse.sh ’ y agregue el siguiente código para separar los valores de día, mes, año, hora, minuto y segundo.
#! / bin / bashAño=`fecha+%Y`
Mes=`fecha+%metro`
Día=`fecha+%D`
Hora=`fecha+%H`
Minuto=`fecha+%METRO`
Segundo=`fecha+%S`
echo `fecha`
echo La fecha actual es:$ Día-$ Mes-$ Año'
echo La hora actual es:$ Hora:$ Minuto:$ Segundo'
Ejecute el archivo con el comando bash.
$intentodate_parse.sh
Espere el comando:
Espere es un comando integrado de Linux que espera completar cualquier proceso en ejecución. Espere El comando se usa con un ID de proceso o de trabajo en particular. Si no se proporciona una identificación de proceso o una identificación de trabajo con el comando de espera, esperará a que se completen todos los procesos secundarios actuales y devolverá el estado de salida. Cree un archivo llamado ' wait_example.sh ’ y agregue el siguiente script.
#! / bin / bashecho 'Esperar comando' &
identificacion de proceso=$!
Espere $ process_id
echo '¿Salió con el estado $?'
Ejecute el archivo con el comando bash.
$intentowait_example.sh
Puede consultar el siguiente enlace para saber más sobre el comando de espera.
Comando de sueño:
Cuando desee pausar la ejecución de cualquier comando durante un período de tiempo específico, puede usar dormir mando. Puede establecer la cantidad de retraso por segundos (s), minutos (m), horas (h) y días (d). Crea un archivo llamado 'Sleep_example.sh' y agregue el siguiente script. Este script esperará 5 segundos después de ejecutarse.
#! / bin / bashechoEsperarpor 5segundos
dormir 5
echoTerminado
Ejecute el archivo con el comando bash.
$intentosleep_example.sh
Puede consultar el siguiente enlace para saber más sobre el comando de suspensión.
https://linuxhint.com/sleep_command_linux/
Espero que, después de leer este artículo, tenga un concepto básico sobre el lenguaje de scripting bash y podrá aplicarlos según sus requisitos.