2013-04-13 9 views
50

Otrzymuję błąd ./test.sh: wiersz 13: [: brakujący `] '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 obecny, a instrukcja else jest zawsze wykonywana niezależnie od danych wejściowych. Próbowałem nawet usuwając; w linii 13, ale to nie pomogło.Brakuje skryptu Bash ']'

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 

jestem nowym bash scripting.So czy jest jakiś głupi błąd, proszę mi wybaczyć.

Odpowiedz

130

Zmień

if [ -s "p1"]; #line 13 

do

if [ -s "p1" ]; #line 13 

nocie przestrzeń.

+2

+ 1you ludzie są naprawdę szybcy !!! – Kent

+0

raz cię pokonałem :-) –

+0

Właśnie znalazłem ID OP jest szybkie! : D – Kent

5

spację przed zakończeniem wspornika

7

Brakuje spacji po "p1":

if [ -s "p1" ]; 
7

Mam ten błąd podczas próby użycia operatora && wewnątrz pojedynczych nawiasach jak [ ... && ... ]. Musiałem przejść na [[ ... && ... ]].

+0

Dzięki, to był mój problem i to rozwiązało. –

+1

'[...] && [...]" też by działało –

+0

Tak [[]] jest bashizmem, więc nie działa gdzie indziej. – BTRUE