-gt: unärer Operator erwartete Meldung beim Ausführen des Codes

-gt: unärer Operator erwartete Meldung beim Ausführen des Codes

Beim Ausführen des folgenden Codes:

DEAD_PROCESS_STATE=$(ps -o state | grep -i z | wc -l)

if [ ${DEAD_PROCESS_STATE} -gt 0 ]
then
     echo "..." 
else
     echo "..."
fi

Ich erhalte die folgende Meldung

line 12: [: -gt: unary operator expected

Zeile 12 bezieht sich auf die Zeile

if [ ${DEAD_PROCESS_STATE} -gt 0 ]

Ich bin mir nicht sicher, wo das Problem liegen könnte. Ich habe versucht, die Null in einfache Anführungszeichen zu setzen, aber es funktioniert trotzdem nicht. Kann jemand sehen, wo der Fehler liegen könnte? Der Code läuft immer noch und sendet die richtigen E-Mail-Benachrichtigungen, die ich eingestellt habe usw. Ich bin nur neugierig, was diese Meldung verursacht.

Antwort1

Sie verwenden dazu folgende Kommandozeile:

if [ -gt 0 ]

da ${PROCESS_STATE} zu nichts erweitert wird, weil es eine nicht initialisierte Variable ist.

Aus diesem Grund wird empfohlen, etwas wie Folgendes zu verwenden:

if [ "${PROCESS_STATE}" -gt 0 ]

um sicherzustellen, dass Sie die richtige Anzahl an Argumenten verwenden.

Übrigens: Prüfen Sie Ihren Text auf Tippfehler und Sie werden den Grund entdecken, warum ${PROCESS_STATE}er im Nichts endet.

verwandte Informationen