0% encontró este documento útil (0 votos)
16 vistas10 páginas

Guía Completa de Scripting Bash

El documento explica diferentes comandos y funciones básicas del lenguaje de scripting Bash, incluyendo cómo crear y leer archivos, imprimir por pantalla, bucles, comparaciones y más.

Cargado por

tirsomorato
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
16 vistas10 páginas

Guía Completa de Scripting Bash

El documento explica diferentes comandos y funciones básicas del lenguaje de scripting Bash, incluyendo cómo crear y leer archivos, imprimir por pantalla, bucles, comparaciones y más.

Cargado por

tirsomorato
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 10

https://repl.

it/languages/bash

Lo primero que tenemos que saber es cómo crear un fichero en bash, la siguiente línea es
imprescindible

#!/bin/bash

A partir de aquí podemos crear lo que queramos. En los siguientes apartados vamos ir viendo
pequeños fragmentos de código que pueden ser copiados y pegados directamente en un
compilador, como el que os paso en el enlace superior, para ir probándolos

1.- IMPRIMIR POR PANTALLA:


Sintaxis:
echo opciones “Hello World”

echo -n -> elimina el INTRO del final


$ echo -n “hola ”
$ echo “adios”
hola adios
Sin -n la salida sería la siguiente:
hola
adios

Opción -e. Indicamos que se interpreten los caracteres con “\”


Opción -E. Indicamos que no se interpreten los caracteres con “\”

\n para hacer un intro:


$ echo -e 'ejemplo\nintro'
ejemplo
intro

\t para un tabulador:
$ echo -e 'tab\ttab'
tab tab

2.- LECTURA DE PARÁMETROS POR TECLADO:

Sintaxis:
read nombreVariableAlmacen

Algunas formas de uso:

echo “Introduce un valor por teclado”


read variable

read -p “Introduce un valor por teclado ” variable

read -p “Introduce dos valores por teclado ” variable1 variable2


3.- LECTURA DE PARÁMETROS EN LA EJECUCIÓN DEL SCRIPT:

Sintaxis:
$posicionDeLaVariableALeer

Ejemplo:
prueba.sh hola
echo $1

Salida por pantalla


hola

4.- NÚMERO DE ARGUMENTOS TOTALES:

Sintaxis:
$#

Ejemplo:
prueba.sh hola
echo $#

Salida por pantalla


2

$* Muestra todos los comandos metidos por la línea de comandos. Es una cadena
que contiene todos los argumentos

5.- BUCLES Y COMPARADORES

5.1. COMPARADORES

Comparaciones de cadenas alfanuméricas


Operador Verdad (TRUE) si:
------------------------------------------
cadena1 = cadena2 cadena1 es igual a cadena2
cadena1 != cadena2 cadena1 no es igual a cadena2
cadena1 < cadena2 cadena1 es menor que cadena2
cadena1 > cadena 2 cadena1 es mayor que cadena 2
-n cadena1 cadena1 no es igual al valor nulo (longitud mayorque 0)
-z cadena1 cadena1 tiene un valor nulo (longitud 0)
Comparación de valores numéricos
Operador Verdad (TRUE) si:
------------------------------------------
x -lt y x menor que y
x -le y x menor o igual que y
x -eq y x igual que y
x -ge y x mayor o igual que y
x -gt y x mayor que y
x -ne y x no igual que y
Comprobacion de atributos de fichero
Operador Verdad (TRUE) si:
------------------------------------------
-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

5.2. BUCLES

En scripting de shell, los bucles son estructuras de control que permiten repetir un conjunto de comandos
varias veces. Hay dos tipos principales de bucles en shell script: el bucle `for` y el bucle `while`.

5.2.1. if/else
La sintaxis de esta construcción es la siguiente:
if "condicion"
then
"comandos"
[elif "condicion"
then
"comandos"]
[else
"comandos"]
fi

EJEMPLO:
#!/bin/bash
# Comprobando terminación de un comando

DIRECTORIO="/tmp/test"

COMANDO="/bin/mkdir $DIRECTORIO"

if $COMANDO
then
echo "$DIRECTORIO ha sido creado"
else
echo "$DIRECTORIO no pudo ser creado"
fi

5.2.2. until
La sintaxis de esta construcción es la siguiente:
until condicion;
do
comandos
done

#!/bin/bash
#Escribe el valor de una determinada variable 10 veces, después de incrementar
su valor

NUM=0

until [ $NUM -gt 10 ];


do
echo "\$NUM: $NUM"
let NUM=$NUM+1
done

5.2.3. Bucle for:

El bucle `for` itera sobre un conjunto de elementos, como una lista de archivos, valores numéricos o
elementos en una cadena.

Sintaxis básica:

for variable in lista_de_elementos


do
# comandos a ejecutar en cada iteración
done

Ejemplo:

for i in {1..5}
do
echo "Número: $i"
done

Este ejemplo imprimirá los números del 1 al 5.

5.2.4. Bucle `while`:

El bucle `while` ejecuta un conjunto de comandos mientras una condición sea verdadera.

Sintaxis básica:

while [ condición ]
do
# comandos a ejecutar mientras la condición sea verdadera
done

Ejemplo:

contador=1
while [ $contador -le 5 ]
do
echo "Contador: $contador"
((contador++))
done

Este ejemplo imprimirá los números del 1 al 5 utilizando un bucle `while`.


5.2.5. case
La sintaxis de esta construcción es la siguiente:
case expresion in
caso_1 )
comandos;;
caso_2 )
comandos;;
......
esac

#!/bin/bash

for NUM in 0 1 2 3
do
case $NUM in
0)
echo "\$NUM es igual a cero";;
1)
echo "\$NUM es igual a uno";;
2)
echo "\$NUM es igual a dos";;
3)
echo "\$NUM es igual a tres";;
esac
done

5.2.6. select
La sintaxis de esta construccion es la siguiente:
select nombre [in lista]
do
comandos que pueden utilizar $nombre
done
Un ejemplo simple para aclarar las cosas.
#!/bin/bash

select OPCION in opcion_1 opcion_2 opcion_3


do
if [ $OPCION ]; then
echo "Opcion elegida: $OPCION"
break
else
echo "Opcion no valida"
fi
done

5.2.7.Control de bucles:

En ambos bucles, puedes utilizar comandos como `break` y `continue` para controlar el flujo del bucle.

- `break`: Sale del bucle.


- `continue`: Salta a la siguiente iteración del bucle.

Ejemplo con `break`:


for i in {1..10}
do
if [ $i -eq 5 ]; then
break # Sale del bucle cuando i es igual a 5
fi
echo "Número: $i"
done

Ejemplo con `continue`:

for i in {1..5}
do
if [ $i -eq 3 ]; then
continue # Salta a la siguiente iteración cuando i es igual a 3
fi
echo "Número: $i"
done

6.- CUT

Corta caracteres y campos. Se pueden usar delimitadores y otras opciones, y a continuación, extraer las
partes seleccionadas de cada fichero.

Sintaxis:
cut –d “delimitador” –f “camposAmostrar” ……

Vamos a trabajar cada una de las siguientes opciones a través del ejemplo:

$ echo "Esto es una prueba, 1 2 3, probando"

Salida por pantalla


Esto es una prueba, 1 2 3, probando

El comando cut nos ofrece los siguientes argumentos:

-d, –delimiter=DELIM usa DELIM en vez de caracteres de tabulación para delimitar los
campos
-f, –fields=LISTA selecciona solamente estos campos; también muestra cualquier línea
que no tenga un carácter delimitador, a menos que se especifique la opción –s

$ echo "Esto es una prueba, 1 2 3, probando" | cut -d "," -f 1

Salida por pantalla


Esto es una prueba
____________________________

$ echo "Esto es una prueba, 1 2 3, probando" | cut -d "," -f 2

Salida por pantalla


123
____________________________
$ echo "Esto es una prueba, 1 2 3, probando" | cut -d "," -f 3

Salida por pantalla


probando

-c, –characters=LISTA selecciona solamente estos caracteres

$ echo "Esto es una prueba, 1 2 3, probando" | cut -c 1-4

Salida por pantalla


Esto
____________________________

$ echo "Esto es una prueba, 1 2 3, probando" | cut -c 6-8

Salida por pantalla


es

____________________________

$ echo "Esto es una prueba, 1 2 3, probando" | cut -c 9-12

Salida por pantalla


una

____________________________

$ echo "Esto es una prueba, 1 2 3, probando" | cut -c 14-18

Salida por pantalla


rueba

____________________________

$ echo "Esto es una prueba, 1 2 3, probando" | cut -c 13-18

Salida por pantalla


prueba

7.- LET

El comando let nos permite trabajar con variables numéricas en scripts.

Sintaxis:
let variable1=variable2(tipo de operación)variable3

$ simple=4
$ let doble=simple*2
$ echo $doble
Salida por pantalla
8
EJEMPLO: Hacer un bucle while que incremente el valor de una variable CONTADOR y vaya
mostrando los valores de dicha variable:

#!/bin/bash

VALOR=0
VALOR_MAXIMO=20
while [ $VALOR -lt $VALOR_MAXIM ];
do
let VALOR=VALOR+1
echo El contador es $VALOR
done

8.- CARPETAS

Sintaxis creación:
mkdir NombreCarpeta

-d -» Comprobar si existe determinado directorio


-f -» Comprobar si existe determinado archivo
-w -» Comprobar si determinado archivo tiene permisos de escritura
-x -» Comprobar si determinado archivo tiene permisos de ejecución.

creador.sh aa bb cc

creador.sh
for dir in $@
do
if [ -d $dir ]
then
echo “La capeta $dir ya existe.”
Else
mkdir $dir
if [ $? -eq 0 +
then
echo “$dir se ha creaco con éxito”
else
echo “Ups! Algo ha fallado al crear $dir”
fi
fi
done

9.- OPERACIONES CON DECIMALES

bc y scale para realizar operaciones con decimales


#!/bin/bash
echo "scale=10; 10 / 3" | bc
# resultado: 3.3333333333
10.- LECTURA POR LÍNEAS DE UN FICHERO SIEMPRE QUE NO HAYA ESPACIOS

Sintaxis:
for LINEA in ‘cat datos.txt’

Ejemplo:
Pepe:23
Paula:34
Juan:27
Maria:54
Federico:50
Pablo:32
Sonia:33
Elena:60
echo "Nombre y edades"
echo "---------------"
for LINEA in `cat datos.txt ` #LINEA guarda el resultado del fichero datos.txt
do
NOMBRE=`echo $LINEA | cut -d ":" -f1` #Extrae nombre
EDAD=`echo $LINEA | cut -d ":" -f2` #Extrae edad
echo "$NOMBRE tiene $EDAD años." #Muestra resultado.
Done

11.- LECTURA POR LÍNEAS DE UN FICHERO MÁS SEGURA


Evita leer archivos con la construcción "for linea in `cat ...`". Si hay algún espacio en el archivo, tus resultados no serán
los esperados. Una forma más segura de leer un archivo línea a línea es:

Sintaxis:

while read LINEA;


do

done < cat datos.txt

Ejemplo:
Pepe: 23
Paula: 34
Juan: 27
Maria: 54
Federico: 50
Pablo:32
Sonia:33
Elena:60
Código BASH:
Ver original
while read LINEA;
do
NOMBRE=`echo $LINEA | cut -d ":" -f1` #Extrae nombre
EDAD=`echo $LINEA | cut -d ":" -f2` #Extrae edad
echo "$NOMBRE tiene $EDAD años." #Muestra resultado.
done < datos.txt
12.- CAT
Sintaxis:
cat nombreFichero1

$ cat Madrigal.txt

También podría gustarte