100

我在文件 test.sh 中收到错误 ./test.sh: line 13: [: missing `]' 我尝试使用方括号和其他选项,例如 -a 或检查文件 p1 的大小,但错误是总是在那里,无论给定的输入如何,总是执行 else 语句。我什至尝试删除 ; 在第 13 行,但它没有帮助。

测试.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

我是 bash 脚本的新手。所以如果有任何愚蠢的错误,请原谅。

4

5 回答 5

252

改变

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

进入

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

注意空间。

于 2013-04-13T21:20:25.830 回答
50

尝试&&在单括号内使用运算符时出现此错误,例如[ ... && ... ]. 我不得不切换到[[ ... && ... ]].

于 2017-01-18T21:05:06.877 回答
13

您在 之后缺少一个空格"p1"

if [ -s "p1" ];
于 2013-04-13T21:20:31.593 回答
8

在右括号前添加一个空格

于 2013-04-13T21:20:16.130 回答
-1

如果您在 windows 上创建了脚本并希望在 linux 机器上运行它,并且您确定您的代码没有错误,请在 linux 机器上安装dos2unix并运行dos2unix yourscript.sh. 然后,运行脚本。

于 2019-12-18T10:39:21.940 回答