
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.