Просто используйте самую верхнюю строку. Это появилось после yum
обновленный Ваш kernel
.
Вторая строка для загрузки ранее установленного ядра (в этом случае, это - ядро от дистрибутива),
Третья строка самоописывает.
Если Вы не коснетесь клавиатуры, то она загрузит значение по умолчанию (самое верхнее в Вашем случае)
Если Вам нравится изменять значение тайм-аута для ускорения, это - смотрит на man grub
и в файл /boot/grub/grub.conf
Удалить кавычки
if ! [[ "$scale" =~ ^[0-9]+$ ]]
then
echo "Sorry integers only"
fi
Используйте оператор -eq
команды test :
read scale
if ! [ "$scale" -eq "$scale" ] 2> /dev/null
then
echo "Sorry integers only"
fi
Это не работает только в bash
, но также и в любой оболочке POSIX. Из документации POSIX test :
n1 -eq n2
True if the integers n1 and n2 are algebraically equal; otherwise, false.
( scale=${scale##*[!0-9]*}
: ${scale:?input must be an integer}
) || exit
Это сделает проверку и выдаст вашу ошибку.
Для целых чисел без знака я использую:
read -r scale
[ -z "${scale//[0-9]}" ] && [ -n "$scale" ] || echo "Sorry integers only"
Тесты:
$ ./test.sh
7
$ ./test.sh
777
$ ./test.sh
a
Sorry integers only
$ ./test.sh
""
Sorry integers only
$ ./test.sh
Sorry integers only
Поскольку OP, кажется, хочет только положительные целые числа:
[ "$1" -ge 0 ] 2>/dev/null
Примеры:
$ is_positive_int(){ [ "$1" -ge 0 ] 2>/dev/null && echo YES || echo no; }
$ is_positive_int word
no
$ is_positive_int 2.1
no
$ is_positive_int -3
no
$ is_positive_int 42
YES
Обратите внимание, что требуется один тест [
:
$ [[ "word" -eq 0 ]] && echo word equals zero || echo nope
word equals zero
$ [ "word" -eq 0 ] && echo word equals zero || echo nope
-bash: [: word: integer expression expected
nope
Это связано с тем, что разыменование происходит с [[
:
$ word=other
$ other=3
$ [[ $word -eq 3 ]] && echo word equals other equals 3
word equals other equals 3
Please check How do I test if a variable is a number in Bash stackoverflow page. This page have some other good ways for checking integer number.
POSIX и переносимое решение:
read scale
if [ -z "${scale##*[!0-9]*}" ];
then echo "Sorry integers only"
fi
В bash вы можете использовать расширенные шаблоны внутри[[...]]
:
scale=4
[[ $scale == +([[:digit:]]) ]] || echo "Sorry integers only"
# ==> no output
scale=4.0
[[ $scale == +([[:digit:]]) ]] || echo "Sorry integers only"
# ==> Sorry integers only
Для X больше 0 я использую
[ 0$X -gt 0 2>/dev/null ] && echo "is number" || echo "is string"
это не дает ошибки, если X пуст