Сначала проверьте, не поврежден ли iso или нет. Для этого просто откройте его в окне, он должен быть смонтирован как Диск. Затем используйте rufus для создания загрузочного USB. Это лучшее для меня. https://rufus.akeo.ie/
Ваше регулярное выражение как-то неверно, и часть после &&
пропускает 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?
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
Для решения /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.]+$
. В этом случае, однако, может быть проще протестировать меньший набор символов, которые не разрешены , что я и делаю выше.