Я хочу запросить значения SYS_UID_MIN, SYS_UID_MAX, SYS_GID_MIN, SYS_GID_MAX из сценария оболочки.
Эти значения закомментированы в /etc/login.defs. Надеюсь, это отражает значения по умолчанию, но это не обязательно.
Каким-то образом программы useradd и groupadd могут определять эти значения, поэтому это должно быть возможно. (Я полагаю, можно было бы посмотреть их источник! :))
Страница руководства для login.defs
документирует значения по умолчанию для этих переменных. Похоже, что все серверы Ubuntu, Debian и CentOS, на которые я смотрел, одинаковы.
The default value for SYS_UID_MIN (resp. SYS_UID_MAX) is 101 (resp. UID_MIN-1).
...
The default value for UID_MIN (resp. UID_MAX) is 1000 (resp. 60000).
Решение на чистом Bash
UID_MIN="$(read -d '' <'/etc/login.defs'; [[ "${REPLY}" =~ [^#[^:space:]]*SYS_UID_MIN[[:space:]]+([[:digit:]]+) ]]; echo -n "${BASH_REMATCH[1]}")";
# useradd's default is 1000 if no UID_MIN in /etc/login.defs
UID_MIN="${UID_MIN:=1000}";