124 votes

Le script Bash manque ']'.

J'obtiens une erreur ./test.sh : ligne 13 : [ : missing `]]' dans le fichier test.sh. J'ai essayé d'utiliser des parenthèses 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 en matière de scripting bash, donc s'il y a une erreur stupide, veuillez m'en excuser.

317voto

Fredrik Pihl Points 20944

Changement

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

sur

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

notez l'espace.

65voto

Carl G Points 2025

J'ai eu cette erreur en essayant d'utiliser le && à l'intérieur de parenthèses simples comme [ ... && ... ] . J'ai dû passer à [[ ... && ... ]] .

18voto

Elmar Peise Points 4266

Il manque un espace après "p1" :

if [ -s "p1" ];

15voto

Sam Ruby Points 3211

Ajouter un espace avant la parenthèse fermante

-1voto

Vladimir Marton Points 317

Si vous avez créé votre script sous Windows et que vous voulez l'exécuter sur une machine linux, et que vous êtes sûr qu'il n'y a pas d'erreur dans votre code, installez dos2unix sur une machine linux et exécutez dos2unix yourscript.sh . Ensuite, exécutez le script.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X