Files

124 lines
1.7 KiB
Markdown

#Temario-BSA - Bash Scripting Avanzado
Proveniente de [[Mecánica Unix - Manejo de la shell]]
---
## Control de flujo
---
### Condicionales `if`, `elif`, `else` y `fi`
```Shell
if [[ "$num" -gt 10 ]]; then
echo "Mayor que 10"
elif [[ "$num" -eq 10 ]]; then
echo "Es 10"
else
echo "Es menor que 10"
fi
```
---
### `[[ . . . ]]`
```Shell
if [[ "$x" == "hola" && -n "$x" ]]; then
echo "coincide"
fi
```
---
### `!` (negación)
``` Shell
if ! grep -q "hola" archivos.txt; then
echo "no existe hola"
fi
```
---
## `case...in...esac`
```Shell
case $option in
start) echo "iniciando";;
stop) echo "Finalizando";;
*) echo "Opción no válida";;
esac
```
---
## `for, in, do, done` (Bucles)
```Shell
for i in 1 2 3; do
echo "numero $i"
done
```
---
## `while, until` (Bucles condicionales)
```Shell
while [[ "$x" -lt 5 ]]; do
echo $x
((x++))
done
```
```Shell
until [[ "$x" -eq 5 ]]; do
echo $x
((x++))
done
```
---
## `select` (Menú interactivo)
```Shell
select opcion in Start Stop Exit; do
echo "Elegiste la opcion $opcion"
done
```
---
## Contador de longitud
```Shell
validador() {
local passwd=$1
local long=${#passwd} # Para leer longitud de un dato, se usa ${#variable}
if [[ "$long" -gt 8 ]]; then
echo "PWD_GT_8"
else
echo "PWD_LT_8"
fi
}
```
---
### Verificación de mayúsculas, minúsculas, números y caracteres especiales
Se utiliza el comparador de valores regex (`=~`) en conjunto con los valores regex:
#### ¿Minúscula?
```Shell
[[ "Hola123" =~ [a-z] ]] # true
```
##### ¿Mayúscula?
```Shell
[[ "Hola123" =~ [A-Z] ]] # true
```
##### ¿Números?
```Shell
[[ "abc123def" =~ [0-9] ]] # true
```
###### ¿Caracteres especiales?
```Shell
[[ "asd1!213das" =~ [^a-zA-Z0-9] ]] # true
```