Пожалуйста, может кто-нибудь поделиться со мной или показать мне скрипт для команды Linux, чтобы читать из файла до EOF и вычислять квадрат всех прочитанных чисел. Результат этого вычисления должен быть сохранен в выходном файле.
решение1
$ echo 3.14 >> /tmp/numbers
$ echo 2 >> /tmp/numbers
$ echo 4.0 >> /tmp/numbers
$ awk '{print $1 * $1}' < /tmp/numbers
9.8596
4
16
$ awk '{print $1 * $1}' < /tmp/numbers > /path/to/OutputFile
решение2
Используя ksh93
и bc
в качестве вычислительной службы, предположим, что файл numbers
содержит одно число в каждой строке:
bc -l |&
bc_pid="$!"
while read num; do
print -p "$num * $num"
read -p sqr
printf '%g*%g = %g\n' "$num" "$num" "$sqr"
done <numbers
kill "$bc_pid"
Эквивалентная вещь в bash
:
coproc bc -l
bc_pid="$!"
while read num; do
printf '%g * %g\n' "$num" "$num" >&"${COPROC[1]}"
read sqr <&"${COPROC[0]}"
printf '%g*%g = %g\n' "$num" "$num" "$sqr"
done <numbers
kill "$bc_pid"