使用 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 ]
^
我希望有人能帮助我。我刚开始学习 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
点赞
if [ "$p" -ge 30 ]
如果你
$ type [
和
$ which [
你需要 space 在方括号后,如:
if [ "$p" -ge 30 ]
^