0

我希望有人能帮我一把。我刚开始使用 Bourne shell 在 Unix 中学习 shell 脚本,但遇到了一个问题。

我正在尝试制作一个脚本,该脚本需要一个包含一系列数字的文件,并使用 while 循环读取它,并检查该数字是否大于 30。如果是,它将增加一个计数器。最后,它回显了有多少次大于 30 的数字。

该文件看起来与此类似,但更大。

0107
0027
0110

这是我的代码

#!/bin/sh
count=0
while read p;do
if ["$p" -ge 30 ]
then
 count=`expr $count + 1`
fi
done < $1
echo " has logged in for more than 30 minutes $count times "

最后,我希望这会说您登录了 2 次,但文件中的每个数字都出现此错误。这是一个例子。

./scriptname: 4: ./scriptname: [0107: not found

无论如何,我在想也许它没有将整数视为整数,而是将其视为字符串。也许我没有正确格式化我的“如果”,但我不确定出了什么问题;这就是我来这里的原因。

4

2 回答 2

0

if您需要为您的喜欢添加一个空格

if [ "$p" -ge 30 ]

如果您这样做,原因应该会变得很清楚

$ type [

$ which [
于 2015-03-13T04:56:00.130 回答
0

在方括号后需要空格,例如:

if [ "$p" -ge 30 ]
    ^
于 2015-03-13T04:56:06.923 回答