En este repositorio encontrarás ejemplos básicos de scripting con bash y batch
Un script es un programa almacenado como texto plano. Estos lenguajes son interpretados, esto quiere decir que son lenguajes de consola de comandos y el sistema interpreta sus instrucciones.
En estas líneas se explicará cómo crear pequeños scripts con bash.
Var |
--------------------------------------- |
Entendemos variable como caja o almacén |
MENSAJE="Hola Mundo" |
echo $MENSAJE |
Esto es lo primero que debemos escribir en el encabezamiento para que lo identifique nuestro sistema (Linux) #!/bin/bash ; #!/bin/ksh ; #!/bin/csh
Condición | Bucles | Selección
--------------------- | --------------------- |------------------
If / else | For | Select
Until | While | Case
Los guiones de Bash reciben los argumentos que le pasa la shell como $1, $2, ...,
Sentencias secuenciales
if [ $# -lt 2 ]; then echo "Necesitas pasar dos argumentos." exit 1 fi
Sentencias iterativas
for arg in "$@" do echo "$arg" done
Operaciones matemáticas con enteros
Realizar cálculos con enteros utilizando la orden ((...)) y la sintaxis de variables $[...] de la siguiente manera:
VAR=55 # Asigna el valor entero 55 a la variable VAR.
((VAR = VAR + 1)) # Suma uno a la variable VAR. Observe la ausencia del carácter '$'.
((++VAR)) # Otra forma de sumar uno a VAR. Preincremento estilo C.
((VAR++)) # Otra forma de sumar uno a VAR. Postincremento estilo C.
echo
La orden ((...)) también se puede utilizar en sentencias condicionales, ya que su código de retorno es 0 o 1 dependiendo de si la condición es cierta o falsa:
if ((VAR == Y * 3 + X * 2)) then echo Si fi
((Z > 23)) && echo Si La orden ((...)) soporta los siguientes operadores relacionales: '==', '!=', '>', '<', '>=', y '<='.
Un proceso Bash no puede realizar cálculos en coma flotante. Las únicas shell Unix capaces de esto son Korn Shell (versión de 1993) y zsh (a partir de la versión 4.0).
Redirecciones de entrada/salida La sintaxis de Bash permite diferentes formas de redirección de entrada/salida de las que la shell Bourne tradicional carece. Bash puede redirigir la salida estándar y los flujos de error estándar a la vez utilizando la sintaxis:
orden >& archivo que es más simple que teclear la orden Bourne equivalente, "orden > archivo 2>&1". Desde la versión 2.05b, Bash puede redirigir la entrada estándar desde una cadena utilizando la siguiente sintaxis (denominada "here strings"):
orden <<< "cadena a leer como entrada estándar" Si la cadena contiene espacios en blanco, deben utilizarse comillas.
Ejemplo: Redirige la salida estándar a un archivo, escribe datos, cierra el archivo y reinicia stdout
exec 6>&1
exec 1>test.data
echo "data:data:data"
exec 1>&6
exec 6>&- Abre y cierra archivos
exec 6<test.data
while read -u 6 dta do echo "$dta" done
exec 6<&- Captura la salida de órdenes externas
VAR=$(find . -name "*h") Expresiones regulares Los procesos Bash 3.0 soportan emparejamiento de expresiones regulares utilizando la siguiente sintaxis, reminiscente de Perl:
[[ string =~ regex]] La sintaxis de expresiones regulares es la misma que documenta la página de manual regex(3). El estado de salida de la orden anterior es 0 si la cadena concuerda con la expresión regular, y 1 si no coinciden. En las expresiones regulares puede accederse a las partes delimitadas por paréntesis, utilizando la variable shell BASH_REMATCH, de la siguiente manera:
if [[ foobarbletch =~ 'foo(bar)bl(.*)']]
then
echo The regex matches!
echo
-d fichero fichero existe y es un directorio -e fichero fichero existe -f fichero fichero existe y es un fichero regular (no un directorio, u otro tipo de fichero especial)
-r fichero Tienes permiso de lectura en fichero -s fichero fichero existe y no esta vacio -w fichero Tienes permiso de escritura en fichero -x fichero Tienes permiso de ejecucion en fichero (o de busqueda si es un directorio)
-O fichero Eres el dueño del fichero -G fichero El grupo del fichero es igual al tuyo.
fichero1 -nt fichero2 fichero1 es mas reciente que fichero2 fichero1 -ot fichero2 fichero1 es mas antiguo que fichero2
- Carlos del Cerro Tenorio
™️ TEAM : Carlos. ASIR UEM
©️ GPL