Не то, чтобы я мог видеть.
Но между [[ val1 < val2 ]]
и(( val1 < val2 ))
:есть разница: первое — это сравнение строк.
$ [[ 2 -lt 007 ]] && echo true || echo false
true
$ [[ 2 < 007 ]] && echo true || echo false
false
$ (( 2 < 007 )) && echo true || echo false
true
Хотя ведущие нули по-прежнему представляют проблему в обоих случаях:
$ (( 20 < 021 )) && echo true || echo false
false
$ [[ 20 -lt 021 ]] && echo true || echo false
false
Это потому, что они отмечают восьмеричные числа, как в C. Но вы предотвращаете это, добавляя к ним префикс 10#
.(Справочник по Bash 6.5 Арифметика оболочки)
$ (( 10#20 < 10#021 )) && echo true || echo false
true
Я прочитал руководство по обмену для Solaris, и похоже, что swap -s
не предназначен для предоставления вам информации, которую вы ищете. Эта команда и этот параметр описывают конфигурацию вашего хранилища подкачки, а не фактическое использование подкачки :
«Эти числа включают пространство подкачки из всех сконфигурированных областей подкачки, перечисленных в параметре -l, а также пространство подкачки в форме физической памяти ».
Похоже, что Solaris рассматривает ОЗУ как резервное хранилище подкачки, а это означает, что ваш top
вывод — это то, на что следует обратить внимание.