Я хочу выполнить некоторые арифметические операции и арифметические операции с плавающей запятой над некоторыми переменными, которые я прочитал из цикла while
.Мой код выглядит так:
while read n p qlen slen len; do
random_var=$(( $qlen + 0 )) # gives all zeros, not saving qlen
qcov=$(echo $len / $qlen | bc -l) #len and qlen are nothing, not working
qcov=$( bc <<< "scale=3; $len / $qlen" ) #same reason as above, not working
done < input_file.txt
Я вытягиваю каждую строку в input_file.txt
и анализирую данные в соответствующие им имена переменных, n
, p
, qlen
, slen
,и len
.Входной файл input_file.txt
выглядит следующим образом:
test1 12.345 123 234 12
test2 23.456 345 678 43
test3 98.765 6537 874 346
...
Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь выполнить некоторую арифметическую операцию над любой из переменных из read
.Я могу echo
переменные просто отлично, но как только я пытаюсь выполнить любую арифметическую манипуляцию, значения ничего не значат.Я подозреваю, что они не цифры, для начала какой-то тип строки (?).Я пробовал много целочисленных и арифметических выражений с плавающей точкой и не могу сохранить значения в переменных.bc
команды, арифметическое расширение, echo
, переданное в bc
, тройное <<<
для bc
, все эти решения, которые я нашел в сети, не работают.
Наиболее распространенные ошибкиЯ получаю:
- строки ничего
- (вход в систему) ошибка 1: ошибка синтаксического анализа
- (вход в систему) ошибка 2: ошибка синтаксического анализа
Я думал об использовании awk
, но мне нужно выполнять эти операции в каждой строке, и awk продолжает работать до конца файла.Есть ли еще способ сделать то, что я хочу, используя awk
?Я действительно не знаю.
Если у кого-то есть ответ или альтернативный способ извлечь данные из файла, я был бы очень признателен.
Заранее спасибо.
ОБНОВЛЕНИЕ:
некоторые возни с кодом заставили меня понять, что все в input_file.txt
сохраняется только в первой переменной n
.Вот почему другие переменные пусты и почему эхо всех переменных выглядело правильно.
Есть идеи, почему значения не сохраняются в правильные переменные?