Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
linux:bash:estructurasdecontrol [23/04/2017 04:46] – [estructuras] mate | linux:bash:estructurasdecontrol [31/05/2023 02:25] (actual) – [if/else] mate | ||
---|---|---|---|
Línia 1: | Línia 1: | ||
= Estructuras de control y bucles | = Estructuras de control y bucles | ||
~~NOTOC~~ | ~~NOTOC~~ | ||
+ | |||
+ | == comparaciones de cadenas alfanuméricas (Test Operators, Binary Comparison) | ||
+ | * cadena1 = cadena2 (también cadena1 == cadena2) | ||
+ | * cadena1 != cadena2 | ||
+ | * cadena1 < cadena2 | ||
+ | * cadena1 > cadena2 | ||
+ | * -n cadena1 -> longitud mayor que 0 | ||
+ | * -z cadena1 -> longitud = 0 | ||
+ | * cadena =~ REG_EXP | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | == comparaciones de valores numéricos (Test Operators, Binary Comparison) | ||
+ | * **x -lt y** -> x < y | ||
+ | * **x -le y** -> x <= y | ||
+ | * **x -eq y** -> x = y | ||
+ | * **x -ge y** -> x >= y | ||
+ | * **x -gt y** -> x > y | ||
+ | * **x -ne y** -> x != y | ||
+ | |||
+ | si se pone entre doble paréntesis: | ||
+ | * **x > y** | ||
+ | * **x >= y** | ||
+ | * **x < y** | ||
+ | * **x %%<=%% y** | ||
+ | |||
+ | == comprobación atributos de fichero (Test Operators, Files) | ||
+ | * **-d** fichero -> fichero existe y es un directorio | ||
+ | * **-e** fichero -> fichero existe | ||
+ | * **-f** fichero -> fichero existe y es un fichero regular (no un directorio o fichero especial) | ||
+ | * **-s** fichero -> fichero existe y no está vacío | ||
+ | * **-h** fichero -> fichero existe y es un symlink | ||
+ | * **-L**? | ||
+ | * **-b** fichero -> fichero existe y es un '' | ||
+ | * **-c** fichero -> fichero existe y es un '' | ||
+ | * **-p** fichero -> fichero -> fichero existe y es un '' | ||
+ | * **-S** fichero -> fichero existe y es un '' | ||
+ | * **-t** fichero -> fichero existe y está asociado a un terminal | ||
+ | * **-N** fichero -> fichero existe y ha sido modificado desde su última lectura | ||
+ | |||
+ | |||
+ | * **-r** fichero -> tiene permiso de lectura | ||
+ | * **-w** fichero -> tiene permiso de escritura | ||
+ | * **-x** fichero -> tiene permiso de ejecución o de búsqueda si es un directorio | ||
+ | * **-g** fichero -> tiene el SGID | ||
+ | * **-u** fichero -> tiene el SUID | ||
+ | * **-k** fichero -> tiene el " | ||
+ | |||
+ | |||
+ | * **-O** fichero -> eres el OWNER del fichero | ||
+ | * **-G** fichero -> el GRUPO del fichero es el mismo que el tuyo | ||
+ | |||
+ | |||
+ | * fichero1 **-nt** fichero2 -> el fichero1 es más reciente que el fichero2 | ||
+ | * fichero1 **-ot** fichero2 -> el fichero1 es más antiguio que el fichero2 | ||
+ | * fichero1 **-ef** fichero2 -> el fichero1 y el fichero2 son HARD LINKS al mismo fichero | ||
+ | |||
+ | |||
+ | * '' | ||
+ | * con -c %s -> tamaño del archivo | ||
+ | |||
+ | == concatenación de comparaciones / comprobaciones | ||
+ | * && -> and | ||
+ | * || -> OR | ||
+ | * ! -> NOT | ||
+ | |||
+ | /vía: [[http:// | ||
+ | |||
== estructuras | == estructuras | ||
- | * if/ | + | === if/else |
+ | [[https:// | ||
+ | {{: | ||
+ | |||
+ | < | ||
if condicion | if condicion | ||
then | then | ||
Línia 10: | Línia 82: | ||
else | else | ||
comandos | comandos | ||
- | fi | + | fi</ |
- | DIRECTORIO="/ | + | <code bash; example>DIRECTORIO="/ |
COMANDO="/ | COMANDO="/ | ||
Línia 20: | Línia 92: | ||
fi | fi | ||
</ | </ | ||
- | * for< | + | === if (ternary operator) |
+ | <code bash; example> | ||
+ | # a = b==5 ? c : d</ | ||
+ | <code bash; example> | ||
+ | <code bash; example> | ||
+ | === for | ||
+ | < | ||
for nombre [in lista] | for nombre [in lista] | ||
do | do | ||
| | ||
done | done | ||
+ | </ | ||
+ | <code bash; example> | ||
LISTA=" | LISTA=" | ||
for directorio in $LISTA | for directorio in $LISTA | ||
Línia 32: | Línia 111: | ||
done | done | ||
</ | </ | ||
- | | + | <code bash; example> |
+ | === while | ||
+ | < | ||
while condición | while condición | ||
do | do | ||
| | ||
done | done | ||
+ | </ | ||
+ | <code bash; example> | ||
NUM=0 | NUM=0 | ||
while [ $NUM -gt 10]; do | while [ $NUM -gt 10]; do | ||
Línia 43: | Línia 125: | ||
done | done | ||
</ | </ | ||
- | * while '' | + | === while |
- | | + | <code bash; example>while true; do sleep 10; ls -la; done</ |
+ | === until | ||
+ | < | ||
until condición | until condición | ||
do | do | ||
| | ||
done | done | ||
+ | </ | ||
+ | <code bash; example> | ||
NUM=0 | NUM=0 | ||
until [ $NUM -gt 10]; do | until [ $NUM -gt 10]; do | ||
Línia 55: | Línia 140: | ||
done | done | ||
</ | </ | ||
- | * case< | + | === case |
+ | < | ||
case expresion in | case expresion in | ||
case1) | case1) | ||
Línia 63: | Línia 149: | ||
... | ... | ||
esac | esac | ||
+ | </ | ||
+ | <code bash; example> | ||
for NUM in 0 1 2 3 | for NUM in 0 1 2 3 | ||
do | do | ||
Línia 75: | Línia 162: | ||
</ | </ | ||
* select | * select | ||
- | + | | |
- | == comparaciones de cadenas alfanuméricas (Test Operators, Binary Comparison) | + | |
- | | + | |
- | * cadena1 != cadena2 | + | |
- | * cadena1 < cadena2 | + | |
- | * cadena1 > cadena2 | + | |
- | * -n cadena1 -> longitud mayor que 0 | + | |
- | * -z cadena1 -> longitud = 0 | + | |
- | * cadena =~ REG_EXP | + | |
- | * [[http://stackoverflow.com/ | + | |
- | * [[http:// | + | |
- | + | ||
- | == comparaciones de valores numéricos (Test Operators, Binary Comparison) | + | |
- | * **x -lt y** -> x < y | + | |
- | * **x -le y** -> x <= y | + | |
- | * **x -eq y** -> x = y | + | |
- | * **x -ge y** -> x >= y | + | |
- | * **x -gt y** -> x > y | + | |
- | * **x -ne y** -> x != y | + | |
- | + | ||
- | si se pone entre doble paréntesis: | + | |
- | * **x > y** | + | |
- | * **x >= y** | + | |
- | * **x < y** | + | |
- | * **x %%<=%% y** | + | |
- | + | ||
- | == comprobación atributos de fichero (Test Operators, Files) | + | |
- | * **-d** fichero -> fichero existe y es un directorio | + | |
- | * **-e** fichero -> fichero existe | + | |
- | * **-f** fichero -> fichero existe y es un fichero regular (no un directorio o fichero especial) | + | |
- | * **-s** fichero -> fichero existe y no está vacío | + | |
- | * **-h** fichero -> fichero existe y es un symlink | + | |
- | * **-L**? | + | |
- | * **-b** fichero -> fichero existe y es un '' | + | |
- | * **-c** fichero -> fichero existe y es un '' | + | |
- | * **-p** fichero -> fichero -> fichero existe y es un '' | + | |
- | * **-S** fichero -> fichero existe y es un '' | + | |
- | * **-t** fichero -> fichero existe y está asociado | + | |
- | * **-N** fichero | + | |
- | + | ||
- | * **-r** fichero -> tiene permiso de lectura | + | |
- | * **-w** fichero -> tiene permiso de escritura | + | |
- | * **-x** fichero -> tiene permiso de ejecución o de búsqueda si es un directorio | + | |
- | * **-g** fichero -> tiene el SGID | + | |
- | * **-u** fichero -> tiene el SUID | + | |
- | * **-k** fichero -> tiene el " | + | |
- | + | ||
- | * **-O** fichero -> eres el OWNER del fichero | + | |
- | * **-G** fichero -> el GRUPO del fichero es el mismo que el tuyo | + | |
- | + | ||
- | * fichero1 **-nt** fichero2 -> el fichero1 es más reciente que el fichero2 | + | |
- | * fichero1 **-ot** fichero2 -> el fichero1 es más antiguio que el fichero2 | + | |
- | * fichero1 **-ef** fichero2 -> el fichero1 y el fichero2 son HARD LINKS al mismo fichero | + | |
- | * | + | |
- | * '' | + | |
- | * con -c %s -> tamaño del archivo | + | |
- | == concatenación de comparaciones / comprobaciones | + | |
- | * && -> and | + | |
- | * || -> OR | + | |
- | * ! -> NOT | + | |
- | + | ||
- | /vía: [[http:// | + |