AWK невозможно безопасно использовать системным администраторам

Рейтинг: 0Ответов: 1Опубликовано: 02.03.2023

Простой пример. Нужно посчитать сумму чисел из входного потока. Откуда пользователь узнает, что awk собран с поддержкой больших чисел?

Получается, что легко можно получить некорректные данные. Как этого избежать?

Ответы

▲ 1

Для больших чисел используйте ключи -M, --bignum.

Откуда пользователь узнает что awk собран с поддержкой больших чисел?

А зачем пользователю это знать? Это должен предусмотреть разработчик, если ему это нужно учесть в своём скрипте. Посмотреть можно довольно просто:

$ awk -V | head -1
GNU Awk 5.2.1, API 3.2, PMA Avon 8-g1, (GNU MPFR 4.2.0, GNU MP 6.2.1)

где видим, что присутствует MPFR и MP, то есть всё ок и с опцией --bignum отработает как надо. Да и если используется данная опция для больших чисел, а сам awk не скомпилирован с нужными библиотеками, то по идее должно выдать предупреждение (инфа из мана):

 -M, --bignum
             Force  arbitrary precision arithmetic on numbers. This
             option has no effect if gawk is not compiled to use the 
             GNU MPFR and GMP libraries.  (In such a case,  gawk  
             is sues a warning.)

Ну или вот еще один можно попробовать способ посложнее — How To Check If MPFR Is Available.