web-dev-qa-db-fra.com

Script Bash manquant ']'

Je reçois une erreur ./test.sh: ligne 13: [: manquant `] 'dans le fichier test.sh. J'ai essayé d'utiliser des crochets et d'autres options telles que -a ou en vérifiant la taille du fichier p1, mais l'erreur est toujours là et l'instruction else est toujours exécutée quelle que soit l'entrée donnée.J'ai même essayé en supprimant le; dans la ligne 13 mais cela n'a pas aidé.

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

Je suis novice dans le scripting. Ainsi, s'il y a une erreur stupide, veuillez m'excuser.

62
quick-

Changement

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

dans

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

notez l'espace.

168
Fredrik Pihl

J'ai eu cette erreur en essayant d'utiliser le && opérateur à l’intérieur de crochets simples comme [ ... && ... ]. Je devais passer à [[ ... && ... ]].

22
Carl G

Il vous manque un espace après "p1":

if [ -s "p1" ];
8
Elmar Peise

ajouter un espace avant le crochet de fermeture

6
Sam Ruby