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 0
bedeutet, dass der Befehl erfolgreich war, nicht, dass er fehlgeschlagen ist. Wenn Sie drucken möchten, failed
ob Ihre DateinichtUm die Abfragezeichenfolge abzugleichen, benötigen Sie lediglich:
grep -q "::=BEGIN" /home/erawson/bin/HP/adaptec.mib || echo "failed"
failed
Wenn 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