преобразовать каждую строку файла во входной файл

printf '%s\n' "${ARRAY[@]}" |
awk '$1 > m || NR == 1 { m = $1 } END { print m }'

Поскольку оболочка bashне выполняет арифметические операции с плавающей запятой, проще сравнивать числа с плавающей запятой на другом языке. Здесь я использую awk, чтобы найти максимум всех элементов в массиве ARRAY.

Команда printfвыведет каждый элемент массива на отдельной строке, а код awkобновит его значение m, чтобы оно стало максимальным из просмотренных до сих пор значений. В конце печатается значение m.

Проверка на NR == 1будет истинной для первой строки, прочитанной программой awk, и инициализирует значение mпервым значением массива (, что вы не можете сделать, это означает, что ваш код вернул бы 0для массива со всеми отрицательными числами, если бы он работал ).

1
17.02.2021, 22:35
0 ответов

Теги

Похожие вопросы