我在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脚本的新手。如果有任何愚蠢的错误,请原谅。
答案 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} }。然后,运行脚本。