Я нашел интересный скрипт Bash, который будет проверять, является ли переменная числовой/целочисленной. Мне это нравится, но я не понимаю, почему «0» не распознается как число? Я не могу спросить автора, привет/ши анонимно.Bash - почему «0» не распознается как номер?
#!/bin/bash
n="$1"
echo "Test numeric '$n' "
if ((n)) 2>/dev/null; then
n=$((n))
echo "Yes: $n"
else
echo "No: $n"
fi
Спасибо!
ОБНОВЛЕНИЕ - 27 апр 2012.
Это мой окончательный код (короткая версия):
#!/bin/bash
ANSWER=0
DEFAULT=5
INDEX=86
read -p 'Not choosing/Wrong typing is equivalent to default (#5): ' ANSWER;
shopt -s extglob
if [[ $ANSWER == ?(-)+([0-9]) ]]
then ANSWER=$((ANSWER));
else ANSWER=$DEFAULT;
fi
if [ $ANSWER -lt 1 ] || [ $ANSWER -gt $INDEX ]
then ANSWER=$DEFAULT;
fi
возможно дубликат [BASH: Тест является ли строка действуют как целое] (HTTP: //stackoverflow.com/questions/2210349/bash-test-whether-string-is-valid-as-an-integer) –