Я использую 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 возвращает «ожидаемое целочисленное выражение»
Я также использовал echo
val=$(echo "$((line /1))")
if [ $val -gt 80 ]
Я получаю
синтаксическая ошибка: недопустимый арифметический оператор (маркер ошибки ...
из команды echo и, конечно, снова условие if возвращает
целочисленное выражениеожидается