Fehler bei einem Skript, das ein anderes Skript mit einer anderen Shell aufruft

Fehler bei einem Skript, das ein anderes Skript mit einer anderen Shell aufruft

Ich habe ein Skript, das in der SH-Shell läuft, dieses Skript läuft einwandfrei. Aber ich habe ein Skript hinzugefügt, das in der KSH-Shell geschrieben ist (im Kopf des Skripts steht #!/bin/ksh), aber jedes Mal bekomme ich den Fehler

./monitor_FMn2.sh[19]: 104:  not found

Welche jedes Mal die zweite Zeile ändern, die den Fehler traf Die 19. Zeile ist die Zeile, in der ich das KSH-Skript aufrufe

if `wc -l < $LOGFILE` > 55;
    then
    logcycle $LOGFILE
fi

Protokollzyklusist das KSH-Skript.

Antwort1

`wc -l < $LOGFILE` > 55

Führt den Befehl aus, dessen Name die Ausgabe von „ wcsubject to split+glob“ ist (in Ihrem Fall 104) und leitet seine Ausgabe in eine Datei namens 55im aktuellen Verzeichnis um. Da auf Ihrem System kein Befehl namens 104 vorhanden ist, erhalten Sie diesen Fehler.

Vermutlich wollten Sie schreiben:

if [ "$(($(wc -l < "$LOGFILE") +0))" -gt 55 ]; then...

Das heißt, führen Sie den Befehl [aka test(anstelle von 104) aus, um zu testen, ob die Ausgabe von , wc -linterpretiert als arithmetischer Ausdruck (und [beschwert sich daher nicht über führende Leerzeichen, falls vorhanden), größer als 55 ist.

Oder mit KSH-Syntax:

if (($(wc -l < "$LOGFILE") +0 > 55)); then...

( +0um den Fall abzudecken, dass der wc -l < "$LOGFILE"Befehl keine Ausgabe erzeugt, etwa wenn die Seite $LOGFILEnicht zum Lesen geöffnet werden kann).

(Möglicherweise möchten Sie auch die leere 55Datei entfernen, die zuvor von Ihrem Skript erstellt wurde).

verwandte Informationen