Как проверить числовые вводы в оболочке Linux?

Ваш корневой раздел всего 15G. Остальной объем не выделен. Создайте еще один раздел (используя сопоставленное имя зашифрованного диска), чтобы получить доступ к остальной части диска.

https://wiki.archlinux.org/index.php/Disk_encryption#Block_device_encryption

0
12.12.2016, 19:10
4 ответа

Если ваш ввод находится в $ VAR ....

if [ -z "${VAR//[0-9]/}" -a ! -z "$VAR" ]; then
  echo only has digits
fi 
1
28.01.2020, 02:19

Проверка алфавитного символа - это всего лишь вопрос:

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
1
28.01.2020, 02:19

Хотя другие ответы хороши, вот однострочник решение

grep -q '^[[:alnum:]]*$' <<< "$mybar" && success_command || failure_command

Если вы хотите вернуть команду do failure в пустой строке, используйте следующий

grep -q '^[[:alnum:]]\+$' <<< "$mybar" && echo "success" || echo "failure"
0
28.01.2020, 02:19

Ваш вопрос действительно расплывчатый, поэтому некоторые догадки здесь:

#!/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, внутри [[...]] Оператор == - это оператор сопоставления с образцом , поэтому мы ищем там любые нецифровые символы.

2
28.01.2020, 02:19

Теги

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