【发布时间】:2019-10-16 07:32:04
【问题描述】:
我使用 bash,我必须读取一个包含很多行的文件
每一行都由一个数字组成。然后,对于每一行(数字),我必须检查值是否 > 80。
这是我的问题,无论我尝试什么,我总是得到:
>integer expression expected
在 if 条件之后。那是因为我用来放置行值的变量是一个字符串。
这是我的原始文件
[root@michelep_centos2 ~]# cat temp1
0
0
0
98
0
0
79
0
81
在我的 bash 脚本中
##!/bin/bash
file=/root/temp1
while IFS= read -r line
do
if [ 'expr $line /1' -gt 80 ]
then echo "hit>80"
fi
done <"$file"
这里 expr 返回错误,因为 $line 是一个字符串。我尝试过使用另一个变量
val=$(($line + 0))
if [ $val -gt 80 ]
这里的 if 条件返回“预期的整数表达式”
我也用过回声
val=$(echo "$((line /1))")
if [ $val -gt 80 ]
我明白了
语法错误:算术运算符无效(错误标记是 ...
来自 echo 命令,当然还有 if 条件返回
需要整数表达式
【问题讨论】:
-
您应该尝试的第一个操作是
dos2unix -f inputfile,然后尝试以下解决方案。