Как санкционировать, если параметр - целое число в UNIX?

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

 if test $2 =~ "^[0-9]+$"
 then
  echo "\nNumero positivo entero"
 else
  echo "\nError: El numero $2 no es un numero entero positivo!!!\a"
 fi
8
задан 15.03.2016, 04:40
4 ответа

Ты можешь использовать регулярные выражения, чтобы санкционировать числа, уже будьте целыми, целыми отрицательные или десятичные, твой podrГ-эксперт реализовывать что-то как это:

validate_number=^-?[0-9]+([.][0-9]+)?$;
echo "Please Enter your number ";
read number
if ![[ $number =~ $validate_number ]]; then
echo "number not valid"
fi

выражения reguales:

[1.] ^-? эта expresiГіn проверяет начало цепи, и если он содержит algГєn одинокий характер один -

[2.] [0-9] проверяет, что это были числа 0 в 9

[3.] характер + определяет оператора или

[4.] ([.] [0-9] +) $ подтверждает, было ли вошедшей стоимости один nГєmero десятичный и проверяет конец цепи с $

cГіdigo предыдущий получает аргумент клавиатуры и проверяет, вошедшим было ли число действительно, уже будьте положительным, отрицательным или десятичным

3
ответ дан 24.11.2019, 14:44
  • 1
    Я вкус, который ты объяснял, что волна с каждой вещью, из-за которой правда я едва изучаю, и я схватил уже больше, что только писать из-за того, что писать. (: – Mac 17.03.2016, 03:38

Возможно санкционировать с одним case:

case $2 in
(""|*[^0-9]*) printf "\nError: ¡¡¡ [$2] no es un número entero positivo !!!\007\n";;
(*) printf "\nNúmero entero positivo\n";;
esac
0
ответ дан 24.11.2019, 14:44

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

esEnteroSegundoParametro() {

    echo "Valor parametro #1 is $1"
    echo "Valor parametro #2 is $2"

    #Revisa si el segundo parámetro es un entero.
    if echo "$2" | egrep -q '^\-?[0-9]+$'; then 
       echo "$2 es un entero."
    else 
       echo "$2 NO es un entero."
    fi
}

Если мы выполняем метод со следующей стоимостью:

esEnteroSegundoParametro 14 12.2 

мы получаем:

introducir la descripción de la imagen aquí

Если мы выполняем метод со следующей стоимостью:

esEnteroSegundoParametro 14 12 

мы получаем:

introducir la descripción de la imagen aquí

0
ответ дан 24.11.2019, 14:44

То, что ты можешь делать, состоит в том, чтобы выдавать это из-за контроля ошибки видя, что, если это цифра, и больше ли он, что 0 - целое число а, так как не.

echo -en $caracter | grep '[[:digit:]]' > /dev/null 2> /dev/null
if [ $? -eq 0 && $caracter -gl 0 ]
then
    echo "Es un digito entero"

# Si no, mostrem un missatge indicant que no és ni lletra ni nombre
else
    echo "No es un digito entero"
fi
0
ответ дан 24.11.2019, 14:44