GNU/Linux >> Tutoriales Linux >  >> Linux

¿Usar Ts sin perder el valor de salida?

Esta pregunta ya tiene respuestas aquí :Obtenga el estado de salida del proceso que se canaliza a otro

(16 respuestas)
Cerrado el año pasado.

Tengo una secuencia de comandos de compilación que ejecuta un comando largo que produce una gran cantidad de salida que fue así:

./compile

Para solucionar problemas de rendimiento de la compilación, quiero usar ts (de moreutils) que antepone cada línea de salida con una marca de tiempo. Así que actualicé mi script así:

bash -c "./compile | ts '[%Y-%m-%d %H:%M:%S]'"

Esto funciona, pero ahora el valor de salida siempre es , evento cuando compile falla (creo, porque ts sale sin un error).

¿Cómo puedo actualizar mi script para devolver compile? el código de salida al usar ts ?

Respuesta aceptada:

Como está usando Bash, puede usar su $PIPESTATUS que es una matriz que contiene los diferentes códigos de salida de los comandos en una canalización:

bash -c './compile | ts "[%Y-%m-%d %H:%M:%S]"; exit "${PIPESTATUS[0]}"'

zsh tiene una característica similar pero usa el $pipestatus matriz en su lugar (recuerde también zsh las matrices se numeran desde 1 , no ).


Linux
  1. ¿Por qué una función principal sin declaración de retorno devuelve el valor 12?

  2. ¿Cómo salgo de la 'pantalla' sin escribir 'salir'?

  3. ¿Cómo usar kill SIGUSR2 en bash?

  4. ¿Cómo puedo usar grep para hacer coincidir pero sin imprimir las coincidencias?

  5. ¿Puedo usar un comando (como un árbol) sin instalarlo en todo el sistema?

Cómo usar ISPConfig y Seafile sin modificaciones manuales de archivos

Cómo usar TeamViewer en Ubuntu 20.04 Linux sin instalación

¡Use contenedores Docker Stop sin arruinar las cosas!

Cómo usar el comando echo sin nueva línea

Cómo usar "yum downloadonly" para descargar un paquete sin instalarlo

¿Cómo regenerar 70-persistent-net.rules sin reiniciar?