exit-Anweisung wird nicht brechen while-Schleife in der unix-shell

Die exit-Anweisung in jedem status überprüfen if-Anweisung keine break die while-Schleife und wirklich beenden Sie das Skript. Gibt es etwas, was ich tun kann, die Schleife zu brechen und beenden Sie mit $STATUS code?

EDIT: ich habe aktualisiert mein code und es immer noch nicht funktioniert. Den status überprüfen if-Anweisungen erfolgreich brechen die Schleife, aber wenn ich versuche zu bewerten, die $EXIT_STATUS es ist immer null, wahrscheinlich etwas zu tun mit Umfang. Was vermisse ich hier?

  if [ $RESTART -le $STEP ]; then
  . tell_step

  while read XML_INPUT; do

    XML_GDG=`get_full_name $GDG_NAME P`

    cp $XML_INPUT $XML_GDG


    STATUS=$?
    EXIT_STATUS=$STATUS
    if [ $STATUS -ne 0 ]; then
      break
    fi

    add_one_gen $XML_GDG

    STATUS=$?
    EXIT_STATUS=$STATUS
    if [ $STATUS -ne 0 ]; then
      break
    fi

  done < $XML_STAGE_LIST

  echo $EXIT_STATUS
  if [ $EXIT_STATUS -ne 0 ]; then
    exit $EXIT_STATUS
  fi

fi
  • schnelle Kommentar - schwer zu Lesen ein Skript mit soo vielen UPPERCASES. Versuchen Sie behalten die Großbuchstaben für einige "spezielle" Variablen (oder besser, nur für den Export sind)..
  • Verwenden break statt exit.
  • break beendet die Schleife, aber nicht beenden Sie das Skript mit dem status, ich bin im wesentlichen versucht, beides zu tun.
  • Und was ist mit der Speicherung der exit-status in eine variable (exit_status=$STATUS) in diesen Fällen und dann beenden mit exit $exit_status?
  • Guten aufrufen, das sollte funktionieren.
  • Ich habe versucht, deine vorgeschlagene Methode, aber ich kann nicht scheinen, um es zu arbeiten. Ich Speichere die $STATUS $exit_status aber einmal bin ich außerhalb der Schleife und überprüfen Sie die $exit_status Wert ist immer null, auch, nachdem es festgelegt wurde, innerhalb der Schleife.
  • Uhms, das ist komisch. Machen Sie auch einen guten Ausgang in echo $EXIT_STATUS?
  • NÖ.
  • Warum halten Sie zurücksetzen STATUS? Warum nicht if [ $? -ne 0]?

InformationsquelleAutor TyC | 2013-07-23
Schreibe einen Kommentar