Le script shell force l'arrêt sans attendre le code de sortie


0

J'ai écrit un script shell checklick.shsur ma boîte CentOS avec le contenu suivant:

#!/bin/sh

#
# description: check link through rtmpdump
#

. /etc/rc.d/init.d/functions

DUMPUTIL=/usr/bin/rtmpdump
"$DUMPUTIL" -B 1 -r "$1" -o /tmp/rtmp-checker.log && echo_success || echo_failure

et exécuté par

./checklink.sh rtmp://tv2.globisoft.net/live/tv2

Maintenant, à partir de la sortie suivante:

entrez la description de l'image ici

J'ai besoin de savoir comment forcer la sortie du script lorsque le journal est imprimé, ERROR: RTMP_ReadPacket, failed to read RTMP packet headercar j'appelle le script depuis la execfonction native PHP et attend indéfiniment le code de sortie, mais le script ne renvoie pas le code de sortie.


Avez-vous écrit exit 1ou le code de sortie que vous voulez dans function echo_failure?
Hastur

Réponses:


0

Pourquoi ne pas tester chaque ligne de la sortie de la commande?

#!/bin/bash

while read -r line; do
  echo "$line"

  if [[ "$line" == "TEST" ]]; then
      exit
  fi
done < <(cat testfile)

Ce qui précède lit la sortie d'une commande donnée (dans ce cas, "cat testfile"), puis renvoie le résultat. Il recherche une ligne égale à "TEST" et se ferme s'il trouve une correspondance.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.