Вот что вы можете начать:
ENUM_LARGEST=$(ls | sed 's/enum-//' | sort -n | tail -1)
..., которая получит ноль-дополненное значение. Один из способов отбрасывания ведущих нулей:
ENUM_LARGEST=$(ls | sed 's/enum-//' | sort -n | tail -1 | bc)
-121--93946-
Вы не должны выполнять синтаксический анализ . Вместо этого используйте echo
/ awk
:
ENUM_LARGEST="$(echo enum-* | awk '$0=substr($NF,6)')"
Часть awk
печатает номер самого высокого номера файла с первыми нулями ( 00190
). substr удаляет первый символ 6 ( enum-
).
-121--93950-
bash
не имеет встроенной математики с плавающей запятой, и я считаю, что она не предоставляет квадратные корни. Для этого необходимо вызвать внешнюю утилиту, например, bc
.
Возможно, лучше написать этот код на другом языке, например Perl или Python; это приближается к порогу сложности, который не справляется с этим хорошо, кажется.