URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10189
[ Назад ]

Исходное сообщение
"Проверить на ввод символов в переменную"

Отправлено Дима , 29-Ноя-17 14:01 
Программа суммирует два числа и проверяет пустая ли переменная но мне нужно исключить ввод букв тд и тп Если в переменную будет введено хоть одна буква, то нужно выводить ошибку и выходит со скрипта

Написать скрипт, который добавляет два числа, указанные в командной строке. Если параметров не 2 или параметры не числа - выдать соответствующую ошибку.

прошу помощи и совета

#!/bin/bash
echo -n "Enter first number: "
read n1
if [ -z "${n1// /}" ]
then
    echo "You didn't enter number"
    exit
fi
echo -n "Enter second number: "
read n2
if [ -z "${n2// /}" ]
then
    echo "You didn't enter number"
    exit
fi
sum=$(($n1 + $n2))
echo "The sum of two numbers="$sum


Содержание

Сообщения в этом обсуждении
"Проверить на ввод символов в переменную"
Отправлено xm , 30-Ноя-17 00:35 
> Программа суммирует два числа и проверяет пустая ли переменная но мне нужно
> исключить ввод букв тд и тп

[ -z `echo $var | tr -d "[:digit:]"` ] && echo "ok"


"Проверить на ввод символов в переменную"
Отправлено Аноним , 01-Дек-17 05:27 
[ -z `echo $var | tr -d "[:digit:]"` ] && echo "ok"

Ну есть же люди которые так кратенько все запишут , я это к чему в своё время искал такое же решение на С,
но простого не нашел, может Вы знаете ???



"Проверить на ввод символов в переменную"
Отправлено Аноним , 01-Дек-17 05:29 
Да делал программу изучения таблицы умножения для дочери, программу то сделал , а вот проверку на ввод нет,
Может подскажете ?

"Проверить на ввод символов в переменную"
Отправлено ыы , 01-Дек-17 11:09 
> Да делал программу изучения таблицы умножения для дочери, программу то сделал ,
> а вот проверку на ввод нет,
> Может подскажете ?

программа в момент вода не различает тип данных. для нее все что вы вводите- это символы.
поэтому в простом случае вы можете банально перебрать в цикле сравнение вводимого символа с 10-ю символами цифр. то есть с 0 1 2 3 4 5 6 7 8 9. если совпадение есть- то введена цифра. если нет- то введен какой-то иной символ.


"Проверить на ввод символов в переменную"
Отправлено ACCA , 04-Дек-17 20:38 
> поэтому в простом случае вы можете банально перебрать в цикле сравнение вводимого
> символа с 10-ю символами цифр. то есть с 0 1 2
> 3 4 5 6 7 8 9. если совпадение есть- то
> введена цифра. если нет- то введен какой-то иной символ.

Цикл-то там нафига?

if (c < '0' || c > '9') printf("'%c' - это не цифра. Change user and press any key.\n", c);