我希望有人能帮我一把。我刚刚开始使用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
无论如何,我在想也许它不是将整数视为整数,而是将其视为字符串。也许我没有正确格式化我的"如果",但我不确定出了什么问题;这就是我来到这里的原因。
您需要在if
中添加一个空格,例如
if [ "$p" -ge 30 ]
这样做的原因应该很清楚,如果你
$ type [
和
$ which [
在左方括号后需要空格,例如:
if [ "$p" -ge 30 ]
^