=0 Befehl nicht gefunden bash

=0 Befehl nicht gefunden bash
grep "::=BEGIN" -q < /home/erawson/bin/HP/adaptec.mib
CHK= echo $?
if ($CHK = "0") ; then
echo "failed"
else    
     exit
fi

Fehler ist:

/home/erawson/bin/try1: line 10: =: command not found

Antwort1

Ändern Sie die if-Anweisung in if [ $CHK -eq 0 ]; then. Beachten Sie die Leerzeichen zwischen den eckigen Klammern.

Die Variable CHK muss auch wie folgt zugewiesen werden CHK=$(echo $?).

So sollte das Skript aussehen:

#!/bin/bash
grep "::=BEGIN" -q < testfile1.txt    
CHK="$?"
if [ "$CHK" -eq 0 ] ; then
        echo "failed"
else
    exit
fi

Antwort2

Sie haben dort ein paar Syntaxfehler, wie bereits erwähnt. Sie scheinen auch eine fehlerhafte Logik zu verwenden. Ein Exit-Status von 0bedeutet, dass der Befehl erfolgreich war, nicht, dass er fehlgeschlagen ist. Wenn Sie drucken möchten, failedob Ihre DateinichtUm die Abfragezeichenfolge abzugleichen, benötigen Sie lediglich:

grep -q "::=BEGIN" /home/erawson/bin/HP/adaptec.mib || echo "failed"

failedWenn Sie die Datei drucken möchten,Streichhölzerdie Zeichenfolge, verwenden Sie Folgendes:

grep -q "::=BEGIN" /home/erawson/bin/HP/adaptec.mib && echo "failed"

Es besteht keine Notwendigkeit, den Beendigungsstatus zu speichern und eine if/else-Prüfung durchzuführen.

Antwort3

So wie ich es verstehe, ist Ihre Anforderung, dass Sie, wenn Sie beim Grepping der Zeichenfolge "::=BEGIN" eine Ausgabe erhalten, "failed" als Echo ausgeben möchten, richtig? Und ich bin mir nicht sicher, warum Sie nach "if" ein ";" verwendet haben... und wieder "then" verwendet haben.

Sie können Folgendes versuchen


if [ -n `grep -q "::=BEGIN" /home/erawson/bin/HP/adaptec.mib` ]
then
        echo "failed"
else
        exit
fi

Hoffe das hilft!! (meinen Annahmen zufolge)

Antwort4

Sie benötigen lediglich ein zusätzliches Klammernpaar:

grep -q "::=BEGIN" </home/erawson/bin/HP/adaptec.mib
if (("$?" = "0")); then
    echo "failed"
else
    exit
fi
  • Die korrekte Syntax für arithmetische Operatoren lautet((

  • Da Sie nur den Exit-Code verwenden $?, müssen Sie ihn auch nicht in einer anderen Variable speichern, Sie können ihn direkt verwenden.

Dies kann weiter wie folgt vereinfacht werden:

if grep -q "::=BEGIN" </home/erawson/bin/HP/adaptec.mib; then
    echo "failed"
else
    exit
fi

verwandte Informationen