Число – это комбинация цифр 0-9.
Переменные Bash хранят все значения в виде строк.
Даже если хранимое значение находится в формате строки, мы можем выполнить все арифметические операции, если хранимое значение является правильным числом.
В качестве лучшей практики, мы должны проверять значения переменных перед выполнением арифметических операций.
Число может быть целым числом, числом с плавающей точкой или положительным/отрицательным числом с префиксом в виде символов “+ и -“.
В этом руководстве мы рассмотрим несколько методов проверки того, что переменная содержит только цифры, целые числа, двойные или плавающие значения, а не буквы.
Использование оператора равно тильда (=~)
Регулярное выражение – это быстрый и простой способ проверки, является ли значение числом.
В скриптах Bash оператор равно тильда (=~) используется для сравнения значения с регулярным выражением.
Его можно использовать с оператором bash if:
#!/usr/bin/env bash # Shell script to check if the input number is an integer 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: 1a2b 12a is not a number
Проверка наличия числа с плавающей точкой
Число с плавающей точкой – это целочисленный тип, представляющий число, которое может содержать дробную часть (также известную как плавающая точка).
Как следует из названия, эти числа могут принимать разные значения в разных местах и в разное время.
Числа с плавающей точкой обычно используются для представления чисел с десятичной точкой.
Например, 1.0, 0.6 и 10.26 – все это числа с плавающей точкой.
Напишем новый скрипт, который считает число с плавающей точкой действительным числом.
#!/usr/bin/env bash read -p "Please enter a number: " VAR if [[ $VAR =~ ^[0-9]+([.][0-9]+)?$ ]]; then echo "${VAR} is a number" else echo "${VAR} is not a number" fi |
Выполните описанный выше скрипт, введя некоторые числа с плавающей точкой.
Этот скрипт будет рассматривать все числа с плавающей точкой как действительные числа.
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.
Любое число может быть положительным или отрицательным.
Число может быть целым или числом с плавающей запятой.
см. также:
- 📜 Преобразование символов в нижний регистр на Bash – проще, чем вы думаете
- ⏲️ Дата в формате ГГГГ-ММ-ДД в скриптах Shell
- 📜 Как создать пустую ветку в репозитории
- Git Как определить, когда служба была запущена и остановлена, используя журнал systemd
- 📜 Shell скрипт для вывода пирамиды звезд
- 🌐 Shell/Bash скрипт для поиска простых чисел на Linux
- 🐍 Как создать игру “Змейка” на языке Python
- 🐍 Как поменять местами две переменные в Python?
- 📜 Shell скрипты – удаление двойных кавычек (“”) из строки
- 🐧 Как обнаружить внутри Bash скрипта путь, по которому он находится