Bash-Scripting fehlt ']' [geschlossen]


81

Ich erhalte eine Fehlermeldung ./test.sh: Zeile 13: [: fehlt `] 'in der Datei test.sh Ich habe versucht, Klammern und andere Optionen wie -a zu verwenden oder die Größe der Datei p1 zu überprüfen, aber der Fehler ist immer da und die else-Anweisung wird immer ausgeführt, unabhängig von der angegebenen Eingabe. Ich habe sogar versucht, die; in Zeile 13 aber es hat nicht geholfen.

test.sh

#!/bin/bash
echo "Enter app name"
read y
$y &
top -b -n 1 > topLog.log
#-w checks for the whole word not and sub string from that word
grep -w "$y" topLog.log > p1
#-s option checks if the file p1 is present or not
if [ -s "p1"];  #line 13
then 
    echo "Successful "
else
    echo "Unsuccessful"
fi
rm p1

Ich bin neu im Bash-Scripting. Wenn es also einen dummen Fehler gibt, entschuldigen Sie mich bitte.

Antworten:



38

Ich habe diesen Fehler beim Versuch, den &&Operator in einzelnen Klammern wie zu verwenden [ ... && ... ]. Ich musste zu wechseln [[ ... && ... ]].


Ich habe auch && mit if verwendet und es hat mein Problem gelöst.
Praveen Patel

Ich habe den Operator == verwendet und hatte das gleiche Problem. Der Wechsel zur doppelten eckigen Klammer hat geholfen, danke!
Vishnu Nair


6

Fügen Sie vor der schließenden Klammer ein Leerzeichen ein


0

Wenn Sie Ihr Skript unter Windows erstellt haben und es auf einem Linux-Computer ausführen möchten und sicher sind, dass Ihr Code keinen Fehler enthält, installieren Sie dos2unix auf einem Linux-Computer und führen Sie es aus dos2unix yourscript.sh. Führen Sie dann das Skript aus.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.