Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

291
Visualizações
Salida de captura Bash del script en ejecución

Es posible que simplemente no sepa cómo expresar lo que estoy preguntando, pero no he podido obtener las respuestas que busco.

Entonces, lo que estoy tratando de hacer es ejecutar un comando o script dentro de un script bash, capturar el resultado línea por línea y compararlo con algún valor.

He intentado cosas en el sentido de

 #!/bin/bash ./runningscript.sh | while read line; do echo "output $line" done

y

 #!/bin/bash ./runningscript.sh | {read line echo "output $line"}

ambos parecen ejecutar el script dándome la salida normal. Lo que quiero es manejar cada línea de salida de runningscript.sh desde dentro de este script bash, ya que se emite. No quiero que espere hasta que runningscript.sh termine de ejecutarse para manejarlo.

Lo siento, soy un usuario de bash muy ocasional y simple, por lo que esta puede ser la pregunta más estúpida, pero cualquier ayuda sería muy apreciada.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Tus guiones funcionan. pero la salida no aparece hasta tarde, ¿tal vez incluso después de que se completan los comandos? Esto suele deberse al almacenamiento en búfer: runningscript.sh tiene que llenar un búfer, normalmente de 4 kB, antes de que su salida se transfiera a través de la canalización al siguiente proceso de la canalización.

Una solución es usar el comando unbuffer que es parte del paquete expect :

 unbuffer runningscript.sh | something_else

Esto engaña a runningscript.sh para que piense que está escribiendo en una terminal interactiva. Como resultado, no se almacena en búfer.

Para obtener más información, consulte https://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe

Alternativamente, si tiene GNU coreutils 7.5 o superior, puede deshabilitar el almacenamiento en búfer de salida con el comando stdbuf :

 stdbuf -oO runningscript.sh | something_else
over 4 years ago · Santiago Trujillo Relatório

0

El formulario que veo con más frecuencia es:

 while read line; do stuff to $line done < $(somescript.sh)
over 4 years ago · Santiago Trujillo Relatório

0

Para esto, debe editar runningscript.sh y poner echo o cualquier acción que desee ponerlo en su propio bucle. La tubería no puede ayudarlo porque primero completa su primer programa y luego lo envía al segundo. Si mejora su script en ejecución, no necesitará usar un script adicional.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda