2013-04-13 23 views
50

Mi viene visualizzato un errore ./test.sh: riga 13: [: missing `] 'nel file test.sh Ho provato a utilizzare parentesi e altre opzioni come -a o controllando la dimensione del file p1 ma l'errore è sempre lì e l'istruzione else viene sempre eseguita indipendentemente dall'input dato. Ho anche provato a rimuovere il; nella linea 13, ma non ha aiutato.Bash scripting mancante ']'

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 

Sono nuovo di colpire scripting.So se c'è qualche errore stupido mi scusi.

risposta

130

Change

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

in

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

nota lo spazio.

+2

+ 1you ragazzi sono veramente veloci !!! – Kent

+0

per una volta ti ho battuto :-) –

+0

Ho appena trovato l'ID di OP è veloce! : D – Kent

5

aggiungere uno spazio prima della chiusura staffa

7

ti manca uno spazio dopo "p1":

if [ -s "p1" ]; 
7

ho ottenuto questo errore durante il tentativo di utilizzare l'operatore && parentesi singoli come [ ... && ... ]. Ho dovuto passare a [[ ... && ... ]].

+0

Grazie, questo era il mio problema e questo lo ha risolto –

+1

'[...] && [...]' avrebbe funzionato anche –

+0

Sì [[]] è un bashismo, quindi non funziona altrove. – BTRUE

Problemi correlati