Ваш корневой раздел всего 15G. Остальной объем не выделен. Создайте еще один раздел (используя сопоставленное имя зашифрованного диска), чтобы получить доступ к остальной части диска.
https://wiki.archlinux.org/index.php/Disk_encryption#Block_device_encryption
Если ваш ввод находится в $ VAR ....
if [ -z "${VAR//[0-9]/}" -a ! -z "$VAR" ]; then
echo only has digits
fi
Проверка алфавитного символа - это всего лишь вопрос:
case $input in
([[:alpha:]]) echo one alpha character;;
(*) echo 'non-alpha or not one character (or non-character)';;
esac
Символ декодируется в соответствии с набором символов / кодировкой языкового стандарта, и языковой стандарт снова запрашивается, чтобы проверить, находится ли он в алфавитном символе класс.
Проверить, является ли $ input
символом, сложнее.
case $input in
(?) echo one character
esac
Предназначен для проверки. Однако в большинстве оболочек это также вернет истину, если $ input
содержит один байт, который не образует допустимый символ. Чтобы учесть это, вы можете сделать:
case $input in
([[:alpha:]]) echo one alpha character;;
(?)
n_chars=$(($(printf %s "$input" | wc -m)))
if [ "$n_char" -eq 1 ]; then
echo one character
else
echo one byte that is not a character
fi;;
("") echo empty;;
(*) echo anything else
esac
Хотя другие ответы хороши, вот однострочник решение
grep -q '^[[:alnum:]]*$' <<< "$mybar" && success_command || failure_command
Если вы хотите вернуть команду do failure в пустой строке, используйте следующий
grep -q '^[[:alnum:]]\+$' <<< "$mybar" && echo "success" || echo "failure"
Ваш вопрос действительно расплывчатый, поэтому некоторые догадки здесь:
#!/bin/bash
input=$1
if [[ -z "$input" || $input == *[^[:digit:]]* ]]; then
echo "your input '$input' is not a number" >&2
exit 1
fi
echo "congrats, '$input' is a number"
В bash, внутри [[...]]
Оператор ==
- это оператор сопоставления с образцом , поэтому мы ищем там любые нецифровые символы.