GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo agotar el tiempo de espera de un grupo de comandos en Bash

También puede usar el método EOF Here Document para crear el script de varias líneas sobre la marcha. La principal ventaja es que puede usar comillas dobles sin escapar es:

timeout 1s bash <<EOF
    sleep 2s
    echo "something without escaping double quotes"  
EOF

Notas:

  1. El cierre EOF no debe seguir espacios/tabulaciones, sino estar al comienzo de la última línea.
  2. Asegúrese de haber exportado funciones locales con export -f my_func o set -o allexport para todas las funciones (antes de declararlas). Esto es relevante para las respuestas anteriores también, dado que llamar a bash/sh ejecuta el proceso en una nueva sesión, sin tener en cuenta las funciones del entorno local.

timeout no es una utilidad de shell y no realiza procesamiento al estilo de shell. Se le debe dar un solo comando para ejecutar. Ese comando, sin embargo, puede tener cualquier cantidad de argumentos. Afortunadamente, uno de los comandos que puedes darle es bash :

timeout 1 bash -c '{ sleep 2; echo something; }'

Por supuesto, de esta forma, las llaves ahora son superfluas:

timeout 1 bash -c 'sleep 2; echo something'

Aquí, bash es el comando que timeout ejecuta -c y sleep 2; echo something son argumento para ese comando.


Linux
  1. Cómo escribir un bucle en Bash

  2. ¿Cómo ejecutar comandos bash de Linux en un script PERL?

  3. ¿Cómo cambiar Cron Shell (sh a Bash)?

  4. ¿Cómo detectar Bash> =4.0?

  5. ¿Cómo puedo usar comandos con alias con xargs?

Cómo comentar en Bash

Cómo personalizar Bash Prompt en Linux

Cómo agregar un usuario a un grupo en Linux

Cómo corregir fácilmente los comandos Bash mal escritos en Linux

Cómo ejecutar un script Bash

¿Cómo aumentar el tiempo de espera en masilla?