我希望有人能帮助我。我刚刚开始使用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
无论如何,我在想,或许它不是将整数视为整数而是将其视为字符串。也许我没有正确地格式化我的“如果”,但我不确定是什么问题;这就是我来这里的原因。
答案 0 :(得分:0)
您需要为if
添加一个空格,例如
if [ "$p" -ge 30 ]
如果您
,原因应该清楚$ type [
和
$ which [
答案 1 :(得分:0)
打开方括号后需要空格,如:
if [ "$p" -ge 30 ]
^