Bash scripting missing']'


Я получаю сообщение об ошибке ./test.sh: строка 13: [: отсутствует`] ' в файле test.sh Я попытался использовать скобки и другие параметры, такие как-a или путем проверки размера файла p1, но ошибка всегда есть, и оператор else всегда выполняется независимо от заданного ввода.Я даже снял ; в строке 13, но это не помогло.

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

Я новичок в Баш scripting.So если есть какая-то глупая ошибка, пожалуйста, извините меня.

4 58

4 ответа:

изменить

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

на

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

обратите внимание на пробел.

я получил эту ошибку при попытке использовать && оператор внутри одной скобки, как [ ... && ... ]. Мне пришлось переключиться на [[ ... && ... ]].

вы пропускаете пробел после "p1":

if [ -s "p1" ];

добавить пробел перед закрывающей скобки