Bash脚本缺少']'

时间:2013-04-13 21:18:22

标签: bash scripting

我在test.sh文件中收到错误./test.sh:line 13:[:missing`]' 我尝试使用括号和其他选项,如-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

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

6 个答案:

答案 0 :(得分:164)

更改

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

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

注意空间。

答案 1 :(得分:20)

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

答案 2 :(得分:8)

"p1"之后你错过了一个空格:

if [ -s "p1" ];

答案 3 :(得分:6)

在关闭括号前添加一个空格

答案 4 :(得分:0)

如果[-s“ p1”];

注意空间:P

答案 5 :(得分:0)

如果您在Windows上创建了脚本并想在Linux机器上运行它,并且确定代码没有错误,请在Linux机器上安装 dos2unix 并运行{{1} }。然后,运行脚本。