Brak skryptu Bash „]” [zamknięty]


82

Otrzymuję błąd ./test.sh: wiersz 13: [: brak `] 'w pliku test.sh Próbowałem użyć nawiasów i innych opcji, takich jak -a lub sprawdzając rozmiar pliku p1, ale błąd jest zawsze tam, a instrukcja else jest zawsze wykonywana niezależnie od danych wejściowych. Próbowałem nawet usunąć; w linii 13, ale to nie pomogło.

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

Nie mam doświadczenia w pisaniu skryptów basha, więc jeśli jest jakiś głupi błąd, proszę mi wybaczyć.

Odpowiedzi:



40

Otrzymałem ten błąd podczas próby użycia &&operatora w pojedynczych nawiasach, np [ ... && ... ]. Musiałem się przełączyć [[ ... && ... ]].


Używałem również && z if i to rozwiązało mój problem.
Praveen Patel

Używałem operatora == i miałem ten sam problem, przejście na podwójny nawias kwadratowy pomogło, dzięki!
Vishnu Nair



0

Jeśli stworzyłeś swój skrypt w systemie Windows i chcesz go uruchomić na komputerze z systemem Linux i jesteś pewien, że nie ma błędu w Twoim kodzie, zainstaluj dos2unix na komputerze z systemem Linux i uruchom dos2unix yourscript.sh. Następnie uruchom skrypt.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.