Задать вопрос

Линукс не умеет считать до 10?

Сегодня столкнулся с очень странно вещью
Суть задачи была достаточно проста в систему мониторинга закинуть резкие всплески количества писем в очереди.
я быстренько накидал правило
test "99" \> "$(mailq|wc -l)"; echo $? на самом деле там немного по лсложнее но суть это не меняет.
И так фишка в чем
Если $(mailq|wc -l) = "15", то подсчет будет работать правильно НО только до появления нового регистра 100 уже будет выдавать статус 0 или если поменять знак в другую сторону то 1 но ни как не от чисел
1000 и тд то же самое
Собственно поверяем значение переменной
root@ks04 ~ $ mailq|wc -l
49971

А вот что возвращает test
root@ks04 ~ $ test "99" \> "$(mailq|wc -l)"; echo $?
0
root@ks04 ~ $ test "9999" \> "$(mailq|wc -l)"; echo $?
0
root@ks04 ~ $ test "99999" \> "$(mailq|wc -l)"; echo $?
0
root@ks04 ~ $ test "999999" \> "$(mailq|wc -l)"; echo $?
0
root@ks04 ~ $ test "999999" \< "$(mailq|wc -l)"; echo $?
1
root@ks04 ~ $ test "99999" \< "$(mailq|wc -l)"; echo $?
1
root@ks04 ~ $ test "9999" \< "$(mailq|wc -l)"; echo $?
1
root@ks04 ~ $ test "999" \< "$(mailq|wc -l)"; echo $?
1
root@ks04 ~ $ test "99" \< "$(mailq|wc -l)"; echo $?
1
root@ks04 ~ $ test "9" \< "$(mailq|wc -l)"; echo $?
1


И можно было бы предположить что что-то не работает, но фишка в том что до 99 все считается норм ( когда значение переменной меньше 100)
1. Почему так
2. че делать ?
  • Вопрос задан
  • 1257 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Читать man
test 99 > 100; echo $?
0

test 99 -gt 100; echo $?
1

Примитивы =, !=, <, > используются для сравнения строк
Эквивалентные им -eq, -ne, -lt, -gt - для сравнения чисел
Ответ написан
Комментировать
@neol
Вы сравниваете строки, а не числа. Для строк 100 < 99
Должно быть что-то типа
test "9999" -lt "$(mailq|wc -l)"; echo $?
Ответ написан
@eugenyg
integer and string comparison use a different set of operators.

:~# test "100" \> "99"; echo $?
1
:~# test "100" -gt "99"; echo $?
0

tldp.org/LDP/abs/html/comparison-ops.html
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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