linux:bash:estructurasdecontrol

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
linux:bash:estructurasdecontrol [23/04/2017 04:47] – [comprobación atributos de fichero (Test Operators, Files)] matelinux: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~~
-== estructuras 
-  * if/else<code> 
-if condicion 
-then 
-  comandos 
-elif condicion 
-  comandos 
-else 
-  comandos 
-fi 
-DIRECTORIO="/tmp/test" 
-COMANDO="/bin/mkdir $DIRECTORIO" 
- 
-if $COMANDO then 
-   echo "OK" 
-else 
-   echo "KO" 
-fi 
-</code> 
-  * for<code> 
-for nombre [in lista] 
-do 
-   comandos 
-done 
- 
-LISTA="etc var home" 
-for directorio in $LISTA 
-do 
-  ls $directorio 
-done 
-</code> 
-  * while<code> 
-while condición 
-do 
-   comandos 
-done 
- 
-NUM=0 
-while [ $NUM -gt 10]; do 
-   let NUM=$NUM+1 
-done 
-</code> 
-  * while ''$ while true; do sleep 10; ls -la; done'' 
-  * until<code> 
-until condición 
-do 
-   comandos 
-done 
- 
-NUM=0 
-until [ $NUM -gt 10]; do 
-   let NUM=$NUM+1 
-done 
-</code> 
-  * case<code> 
-case expresion in 
-    case1) 
-       comandos 
-    case2) 
-       comandos 
-    ... 
-esac 
- 
-for NUM in 0 1 2 3 
-do 
-  case $NUM in 
-    0) echo "cero"; 
-    1) echo "uno"; 
-    2) echo "dos"; 
-    3) echo "tres"; 
-  esac 
-done 
-</code> 
-  * select 
  
 == comparaciones de cadenas alfanuméricas (Test Operators, Binary Comparison) == comparaciones de cadenas alfanuméricas (Test Operators, Binary Comparison)
Línia 114: Línia 40:
   * **-t** fichero -> fichero existe y está asociado a un terminal   * **-t** fichero -> fichero existe y está asociado a un terminal
   * **-N** fichero -> fichero existe y ha sido modificado desde su última lectura   * **-N** fichero -> fichero existe y ha sido modificado desde su última lectura
 +
  
   * **-r** fichero -> tiene permiso de lectura   * **-r** fichero -> tiene permiso de lectura
Línia 121: Línia 48:
   * **-u** fichero -> tiene el SUID   * **-u** fichero -> tiene el SUID
   * **-k** fichero -> tiene el "sticky bit"   * **-k** fichero -> tiene el "sticky bit"
 +
  
   * **-O** fichero -> eres el OWNER del fichero   * **-O** fichero -> eres el OWNER del fichero
   * **-G** fichero -> el GRUPO del fichero es el mismo que el tuyo   * **-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 **-nt** fichero2 -> el fichero1 es más reciente que el fichero2
   * fichero1 **-ot** fichero2 -> el fichero1 es más antiguio 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   * fichero1 **-ef** fichero2 -> el fichero1 y el fichero2 son HARD LINKS al mismo fichero
 +
  
   * ''stat <fichero>'' -> información en disco del fichero   * ''stat <fichero>'' -> información en disco del fichero
Línia 138: Línia 68:
  
 /vía: [[http://www.linux-es.org/node/238]] /vía: [[http://www.linux-es.org/node/238]]
 +
 +== estructuras
 +=== if/else
 +[[https://phoenixnap.com/kb/bash-if-statement]]
 +{{:linux:bash:pasted:20230531-022532.png}}
 +
 +<code bash>
 +if condicion
 +then
 +  comandos
 +elif condicion
 +  comandos
 +else
 +  comandos
 +fi</code>
 +<code bash; example>DIRECTORIO="/tmp/test"
 +COMANDO="/bin/mkdir $DIRECTORIO"
 +
 +if $COMANDO then
 +   echo "OK"
 +else
 +   echo "KO"
 +fi
 +</code>
 +=== if (ternary operator)
 +<code bash; example>a=$([ "$b" == 5 ] && echo "$c" || echo "$d")
 +# a = b==5 ? c : d</code>
 +<code bash; example>[ $b == 5 ] && { a=$c; true; } || a=$d</code>
 +<code bash; example>VARIABLE=`[ test ] && echo VALUE_A || echo VALUE_B`</code>
 +=== for
 +<code bash>
 +for nombre [in lista]
 +do
 +   comandos
 +done
 +</code>
 +<code bash; example>
 +LISTA="etc var home"
 +for directorio in $LISTA
 +do
 +  ls $directorio
 +done
 +</code>
 +<code bash; example>for f in *; do echo $f; done</code>
 +=== while
 +<code bash>
 +while condición
 +do
 +   comandos
 +done
 +</code>
 +<code bash; example>
 +NUM=0
 +while [ $NUM -gt 10]; do
 +   let NUM=$NUM+1
 +done
 +</code>
 +=== while
 +<code bash; example>while true; do sleep 10; ls -la; done</code>
 +=== until
 +<code bash>
 +until condición
 +do
 +   comandos
 +done
 +</code>
 +<code bash; example>
 +NUM=0
 +until [ $NUM -gt 10]; do
 +   let NUM=$NUM+1
 +done
 +</code>
 +=== case
 +<code bash>
 +case expresion in
 +    case1)
 +       comandos
 +    case2)
 +       comandos
 +    ...
 +esac
 +</code>
 +<code bash; example>
 +for NUM in 0 1 2 3
 +do
 +  case $NUM in
 +    0) echo "cero";
 +    1) echo "uno";
 +    2) echo "dos";
 +    3) echo "tres";
 +  esac
 +done
 +</code>
 +  * select
 +  * break (y nested break): [[https://unix.stackexchange.com/questions/200381/how-can-i-break-out-of-a-while-loop-from-within-a-nested-case-statement]]
  • linux/bash/estructurasdecontrol.1492948020.txt.gz
  • Darrera modificació: 23/04/2017 04:47
  • per mate