Согласно этим источникам, разрешение для jiffies составляет 1 / HZ
(какое бы значение ни было HZ
):
Он определен в одном из файлов заголовков, зависящих от ядра, например,
/usr/include/asm-generic/param.h
который является включен из
/usr/include/linux/param.h
и, в конечном итоге, из
, который может находиться в директории, зависящей от архитектуры, например,
/usr/include/x86_64-linux-gnu/sys/param.h
. Из источников очевидно, что это константа времени компиляции и зависит от вашей конкретной системы.
По умолчанию регулярное выражение не привязывается к началу или концу строки. Это отличается от, например,. шаблоны подстановки имен файлов. Это означает, что выражение может совпасть где угодно в заданной строке.
Чтобы ваше выражение было привязано к началу строки, используйте
^worker[[:digit:]]
Чтобы дополнительно привязать его к концу строки и разрешить от одной до трех цифр, используйте
^worker[[:digit:]]{1,3}$
Если вы хотите сопоставить worker10
, но не worker01
илиworker003
(без нуля -заполненные числа ), используйте
^worker([0-9]|[1-9][0-9]{1,2})$
Закрепите регулярное выражение с обеих сторон.
^worker[[:digit:]]$
why the following regular expression print valid, while name is hdpworker01
Почему? Поскольку регулярное выражение не привязано , то есть оно не определяет начало (или конец )строки, которая должна быть сопоставлена. Регулярное выражение worker
будет соответствовать, если какая-либо часть совпадающей строки равна worker
. Он будет соответствовать hdpworkeranything
, а также worker
и многим другим вариантам. Чтобы соответствовать строке, начинающейся с worker
, регулярное выражение должно содержать ^
, например:
^worker
Если вы хотите сопоставить (до )3 цифры после слова worker, вы можете использовать:
^worker[0-9]{0,3}$
Тем не менее, было бы целесообразно зафиксировать число в скобках и поместить регулярное выражение в переменную (Использование переменной является лучшей практикой в настоящее время):
re='^worker([0-9]{0,3})$'
$
означает, что строка должна заканчиваться в этой точке.
Матч станет:
[[ $str =~ $re ]] && n=$((10#${BASH_REMATCH[1]}+0)) || n=-1
what I try to do is to print valid only if name is worker[0-999]
И это позволит проверить числовой n
диапазон:
(( 0 <= n && n <= 999 )) && echo "valid with n=$n"