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ć.
Otrzymałem ten błąd podczas próby użycia
&&
operatora w pojedynczych nawiasach, np[ ... && ... ]
. Musiałem się przełączyć[[ ... && ... ]]
.źródło
Brakuje spacji po
"p1"
:if [ -s "p1" ];
źródło
dodaj spację przed nawiasem zamykającym
źródło
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.źródło