Это тип отклонения 'tcp-reset', который делает то, что ОС обычно делает с закрытыми портами:
-A INPUT -i ens3 -p tcp -j REJECT --reject-with tcp-reset
Этот скрипт проверяет, является ли он номером или нет:
num=123
if [[ "$num" =~ ^[0-9]+$ ]]
then
echo "It is Number"
fi
Ульрих Шварц действительно ответил на вопрос уже в своем комментарии. Просто оставьте 2> / dev / null
и посмотрите, что произойдет, если $ rnum
не является целым числом. Рассмотрим следующий пример, записанный в интерактивном сеансе bash
:
$ rnum='foo'
$ [ "$rnum" -eq "$rnum" ]
-bash: [: foo: integer expression expected
$ echo $?
2
Если вы ищете альтернативный метод проверки того, является ли значение целым числом, Prashant Band уже его предоставил. Однако я предпочитаю более портативное решение (не использующее оператор = ~
):
expr "X$rnum" : 'X[-+]\{0,1\}[0-9]\{1,\}$' >/dev/null || {
echo 'rnum is not a number' >&2
exit 1
}
Обратите внимание на странные значения, такие как -0
, +0
и 000
обрабатываются как целые числа. Однако это то же поведение, что и при использовании исходной конструкции, представленной в вашем вопросе.