LINUX.ORG.RU

bash проверка на число

 


2

1

Подскажите как в bash проверить является ли параметр числом. В интернете нашел такой пример:

#!/usr/bin/env bash
if ! [[ $1 =~ '^[0-9]+$' ]]; then
    echo "$1 не является числом." >&2
    exit 1
fi   
echo "$1 - число."
но у меня он не работает.
mike@mikepc:~/src/test$ ./test.sh 5
5 не является числом.
Подскажите что я делаю не правильно?


Ответ на: комментарий от Miker

Кстати, именно для юзеров, плохо разбирающихся в скриптах (таких как я :)), и существует уже очень давно сервис shellcheck.net. Так же, в виде пакетов в дистрах (shellcheck 0.8.0-228).

Проверка в нем для данного скрипта:

Line 2:
if ! [[ $1 =~ '^[0-9]+$' ]]; then
              ^-- SC2076 (warning): Remove quotes from right-hand side of =~ to match as a regex rather than literally.

Исправленное:

#!/usr/bin/env bash
if ! [[ $1 =~ ^[0-9]+$ ]]; then
    echo "$1 не является числом." >&2
    exit 1
fi   
echo "$1 - число."

И результат:

$ ./test.sh 5     
5 - число.

krasnh ★★★
()
Последнее исправление: krasnh (всего исправлений: 1)