Я проверяю счетчик в цикле, чтобы определить, превышает ли он какой-либо максимум, если он указан в необязательном параметре. Поскольку это необязательно, я могу либо по умолчанию использовать максимум, либо специальное значение, либо максимально возможное целое число. Первый вариант потребует дополнительной проверки на каждой итерации, поэтому я бы хотел узнать , что представляет собой максимальное целое число, которое будет работать с операцией Bournne Shell.Найти максимальное положительное целочисленное значение в Bourne Shell
ответ
Я бы держаться подальше от целых пределов, они не портативными и проблематичной
$ test 123412341234112341235 -gt 1 || echo bash compares ints
-bash: test: 123412341234112341235: integer expression expected
bash compares ints
$ env test 1 -gt 123412341234112341235 || echo coreutils compares strings
coreutils compares strings
Вместо этого я бы просто сделать, как вы предлагаете, и сделать дополнительное сравнение, как:
[ "$limit" ] && [ $count -gt $limit ]
В оболочке Bourne нет средств для хранения или обработки чисел - все хранится в виде строки. Если вы спрашиваете о такого рода вещи:
if [ $x -gt $y ]
то, что обрабатывается отдельно (в Bourne оболочки) исполняемый файл под названием test
, который имеет символическую ссылку с именем «[». Поэтому ваш вопрос действительно о границах команды test
, которую все документы, которые я могу найти, кажутся довольно сдержанными.
В моей системе максимальное целое число Bash, похоже, совпадает с константой LONG_MAX моей библиотеки Perl POSIX. Очевидно, что это будет зависеть от вашей платформы, и как ваш Bash был собран, и т.д. Но это, кажется, является хорошей отправной точкой для тестирования:
declare -i max=$(perl -MPOSIX -le 'print LONG_MAX')
echo $max
9223372036854775807
echo "max+1 = " $((i += 1))
max+1 = -9223372036854775808
uname -a
Linux x200s 3.2.0-33-generiC#52-Ubuntu SMP Thu Oct 18 16:29:15 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
Update: После попытки этого на старой 32-битной Linux, Я вижу, что POSIX LONG_MAX от Perl - 2147483647, но у Bash все еще есть тот же предел. Он, как представляется, определен в /usr/include/limits.h и зависит от вашего __WORDSIZE, который может быть 64 бит даже в 32-битных системах:
/* Minimum and maximum values a `signed long int' can hold. */
# if __WORDSIZE == 64
# define LONG_MAX 9223372036854775807L
# else
# define LONG_MAX 2147483647L
# endif
- 1. Regex: как найти максимальное целочисленное значение шаблона?
- 2. максимальное целочисленное значение в JavaScript
- 3. , которые возвращают значение в bourne-shell
- 4. Как найти максимальное положительное значение в массиве в Mathematica?
- 5. Bourne Shell Script
- 6. положительное целочисленное значение с использованием jquery/javascript
- 7. Максимальное целочисленное значение для double
- 8. bourne-shell find-remove
- 9. Найти минимальное положительное значение
- 10. Найти максимальное целочисленное значение строковых чисел в DB2
- 11. флеш выход в Bourne Shell
- 12. Редактирование файла в Bourne Shell
- 13. Каково максимальное целочисленное значение в Flex?
- 14. Bourne Shell сравнить две строки
- 15. Bourne Shell Left Right Justify
- 16. Количество записей превышено максимальное целочисленное значение
- 17. Максимальное целочисленное использование в C#
- 18. Сравните целочисленное значение с NSMutableArray и найдите максимальное значение
- 19. Передача переменной Bourne Shell в команду cut
- 20. Unicode в Bourne Shell исходный код
- 21. Как сравнить строки в Bourne Shell?
- 22. «Слишком мало аргументов» в сценарии Bourne Shell
- 23. Как повторить символ в Bourne Shell?
- 24. Как найти минимальное положительное значение в массиве?
- 25. Bourne Shell Script Поиск для String
- 26. Пытается найти максимальное значение
- 27. Найти максимальное значение
- 28. Найти максимальное значение - Java
- 29. Найти Максимальное значение распределения
- 30. Как установить максимальное целочисленное значение как значение TextBox