Как проверить, есть ли хост-имя FQDN только с небольшими буквами

Сначала проверьте, не поврежден ли iso или нет. Для этого просто откройте его в окне, он должен быть смонтирован как Диск. Затем используйте rufus для создания загрузочного USB. Это лучшее для меня. https://rufus.akeo.ie/

0
25.11.2018, 13:18
3 ответа

Ваше регулярное выражение как-то неверно, и часть после &&пропускает echo. Вместо написания сложных регулярных выражений для проверки имени хоста вы можете сделать наоборот:

hostname=master01.naSsa.com
[[ $hostname  =~ [A-Z] ]] && echo "hostname is not ok"
hostname is not ok

Или

hostname=master01.nassa.com
[[ $hostname  =~ [A-Z] ]] || echo "hostname is ok"
hostname is ok

Кроме того, чтобы избежать сложной ситуации, вам лучше определить локаль для C или posix, используяLC_ALL=C
См.:Почему [A -Z] соответствует строчным буквам в bash?

4
28.01.2020, 02:14
hostname=master01.nassa.com
[[ "$hostname"  =~ ^[a-z]+\.[a-z]+\.[a-z]+$ ]] && echo hostname is ok

— это ваш пример с исправленными ошибками, но для более точной проверки см.https://stackoverflow.com/questions/11809631/fully-qualified-domain-name-validation

1
28.01.2020, 02:14

Для решения /bin/sh:

hostname=master01.nassa.com

case $hostname in
    *[A-Z]*)
        echo 'Not ok' ;;
    *)
        echo 'Ok'
esac

Ветвь "Не в порядке" берется, если значение $hostnameсодержит символы верхнего регистра (это может зависеть от ваших региональных настроек ), а ветвь "В порядке" берется, если значение "Не в порядке" ветка не взята.

Это похоже наbash-конкретный (, а также kshиzsh)

if [[ "$hostname" == *[A-Z]* ]]; then
    echo 'Not ok'
else
    echo 'Ok'
fi

Ваш тест с регулярным выражением ^[a-z.a-z.a-z]+$идентичен тесту с ^[a-z.]+$(, так как класс символов [...]соответствует одному символу и повторение a-zвнутри него не будет иметь значения ). На самом деле это будет делать то, что вы говорите , то есть разрешить только имена хостов со строчными буквами (и точками ). Проблема в том, что ваше имя хоста также содержит цифры. Чтобы учесть и это, вам нужно будет использовать ^[a-z0-9.]+$. В этом случае, однако, может быть проще протестировать меньший набор символов, которые не разрешены , что я и делаю выше.

2
28.01.2020, 02:14

Теги

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