Estructuras de control y bucles

  • 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
  • -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 device block
  • -c fichero → fichero existe y es un device character
  • -p fichero → fichero → fichero existe y es un pipe
  • -S fichero → fichero existe y es un socket
  • -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 «sticky bit»
  • -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
  • stat <fichero> → información en disco del fichero
    • con -c %s → tamaño del archivo
  • && → and
  • || → OR
  • ! → NOT

/vía: http://www.linux-es.org/node/238

https://phoenixnap.com/kb/bash-if-statement

if condicion
then
  comandos
elif condicion
  comandos
else
  comandos
fi
example
DIRECTORIO="/tmp/test"
COMANDO="/bin/mkdir $DIRECTORIO"
 
if $COMANDO then
   echo "OK"
else
   echo "KO"
fi
example
a=$([ "$b" == 5 ] && echo "$c" || echo "$d")
# a = b==5 ? c : d
example
[ $b == 5 ] && { a=$c; true; } || a=$d
example
VARIABLE=`[ test ] && echo VALUE_A || echo VALUE_B`
for nombre [in lista]
do
   comandos
done
example
LISTA="etc var home"
for directorio in $LISTA
do
  ls $directorio
done
example
for f in *; do echo $f; done
while condición
do
   comandos
done
example
NUM=0
while [ $NUM -gt 10]; do
   let NUM=$NUM+1
done
example
while true; do sleep 10; ls -la; done
until condición
do
   comandos
done
example
NUM=0
until [ $NUM -gt 10]; do
   let NUM=$NUM+1
done
case expresion in
    case1)
       comandos
    case2)
       comandos
    ...
esac
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
  • linux/bash/estructurasdecontrol.txt
  • Darrera modificació: 31/05/2023 02:25
  • per mate