使用 Bourne 在 Unix 中读取文件、循环和表达式 shell

File reading, loops and expressions in Unix using Bourne shell

我希望有人能帮助我。我刚开始学习 shell 使用 Bourne shell 在 Unix 中编写脚本,但我 运行 遇到了问题。

我正在尝试编写一个脚本,该脚本获取一个包含一系列数字的文件并使用 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 < 
echo " has logged in for more than 30 minutes $count times "

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

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

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

您需要为您的 if 点赞

添加一个 space
if [ "$p" -ge 30 ]

如果你

$ type [

$ which [

你需要 space 在方括号后,如:

if [ "$p" -ge 30 ]
    ^