🐧 Проверка, содержит ли переменная число на Bash

Как проверить что переменная число?

by itisgood

Число – это комбинация цифр 0-9.

Переменные Bash хранят все значения в виде строк.

Даже если хранимое значение находится в формате строки, мы можем выполнить все арифметические операции, если хранимое значение является правильным числом.

В качестве лучшей практики, мы должны проверять значения переменных перед выполнением арифметических операций.

Число может быть целым числом, числом с плавающей точкой или положительным/отрицательным числом с префиксом в виде символов “+ и -“.

В этом руководстве мы рассмотрим несколько методов проверки того, что переменная содержит только цифры, целые числа, двойные или плавающие значения, а не буквы.

Использование оператора равно тильда (=~)

Регулярное выражение – это быстрый и простой способ проверки, является ли значение числом.

В скриптах Bash оператор равно тильда (=~) используется для сравнения значения с регулярным выражением.

Его можно использовать с оператором bash if:

Запишите вышеприведенный фрагмент в скрипте и выполните его.

Первый запуск:
Please enter a number: 12
12 is a number

Снова запустите скрипт, введите буквы и проверьте результат:

Второй запуск:
Please enter a number: 1a2b
12a is not a number

Проверка наличия числа с плавающей точкой

Число с плавающей точкой – это целочисленный тип, представляющий число, которое может содержать дробную часть (также известную как плавающая точка).

Как следует из названия, эти числа могут принимать разные значения в разных местах и в разное время.

Числа с плавающей точкой обычно используются для представления чисел с десятичной точкой.

Например, 1.0, 0.6 и 10.26 – все это числа с плавающей точкой.

Напишем новый скрипт, который считает число с плавающей точкой действительным числом.

Выполните описанный выше скрипт, введя некоторые числа с плавающей точкой.

Этот скрипт будет рассматривать все числа с плавающей точкой как действительные числа.

Please enter a number: 12.10
12.10 is a number

Использование оператора Switch Case

Некоторые скрипты требуют наличия оператора case.

Он похож на операторы switch в других языках программирования.

Мы также можем использовать регулярные выражения в параметрах оператора case и проверить, является ли заданный ввод числом.

#!/usr/bin/env bash
# Shell script to check if the input number is a number
# using switch case statement

read -p "Please enter a number: " VAR

case $VARin
''|*[!0-9]*) echo "${VAR} is not a number" ;;
*) echo "${VAR} is a number" ;;
esac

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

Please enter a number: 12
12 is a number

Проверка наличия в числе знаков +/-

В приведенных выше методах мы проверили целочисленные значения, которые содержат только цифры 0-9, а также числа с плавающей запятой, которые также содержат дробные значения, известные как десятичные числа.

В некоторых случаях число также может быть положительным или отрицательным.

Любое число без префикса или с префиксом + является положительным числом.

Число с префиксом – является отрицательным числом.

Обновите регулярное выражение, чтобы учитывать число, перед которым стоит знак +/-.

#!/usr/bin/env bash
read -p "Please enter a number: " VAR
if [[ $VAR =~ ^[+-]?[0-9]+$ ]]; then
echo "${VAR} is a number"
else
echo "${VAR} is not a number"
fi

Запустите вышеприведенный скрипт с двумя различными входными данными и проверьте результаты.

Первый запуск
Please enter a number: 12
12 is a number
Второй запуск
Please enter a number: -12
-12 is a number
Третий запуск
Please enter a number: +12
+12 is a number

Проверим, является ли число положительным или отрицательным

При выполнении арифметических операций в скриптах bash необходимо проверять вводимые значения. Приведенный ниже скрипт  поможет вам проверить, является ли введенное число положительным или отрицательным.

#!/usr/bin/env bash
read -p "Please enter a number: " VAR

if [[ $VAR =~ ^[+,-]?[0-9]+$ ]]; then
## Check if the input is a positive or negative number
if [[ $VAR =~ ^[-][0-9]+$ ]]; then
echo "${VAR} is a negative number"
else
echo "${VAR} is a positive number"
fi
else
echo "${VAR} is not a number"
fi

Запустите приведенный выше скрипт с положительными и отрицательными числами.

Затем проверьте результаты.

Первый запуск
Please enter a number: 12
12 is a positive number
Второй запуск
Please enter a number: -12
-12 is a negative number
Третий запуск
Please enter a number: +12
+12 is a positive number

Заключение

Число – это набор цифр от 0 до 9.

Любое число может быть положительным или отрицательным.

Число может быть целым или числом с плавающей запятой.

см. также:

You may also like

Leave a Comment