Онлайн робочі станції OnWorks Linux та Windows

логотип

Безкоштовний онлайн-хостинг для робочих станцій

<Попередній | зміст | Наступна>

Перевірка введення

З нашою новою можливістю введення з клавіатури постає додатковий виклик програмування, перевірка введення. Дуже часто відмінність між добре написаною програмою і погано написаною полягає в здатності програми впоратися з несподіваним. Часто неочікуване з’являється у вигляді поганих даних. Ми трохи зробили це з нашими програмами оцінювання в попередньому розділі, де ми перевірили значення цілих чисел і перевірили


виводити порожні значення та нечислові символи. Важливо виконувати такі перевірки програмування кожного разу, коли програма отримує вхідні дані, щоб захистити від недійсних даних. Це особливо важливо для програм, які використовуються кількома користувачами. Пропуск цих запобіжних заходів в інтересах економіки може бути виправданим, якщо програма буде використана автором лише один раз для виконання якогось спеціального завдання. Навіть тоді, якщо програма виконує небезпечні завдання, такі як видалення файлів, було б розумно включити перевірку даних, про всяк випадок.

Ось приклад програми, яка перевіряє різні види введення:



#! / бін / баш

# read-validate: перевірка введення invalid_input () {

echo "Недійсний вхід '$REPLY'" >&2 вихід 1

}


read -p "Введіть один елемент > "


# вхід порожній (недійсний)

[[ -z $REPLY ]] && invalid_input


# введення містить кілька елементів (недійсне)

(( $(echo $REPLY | wc -w) > 1)) && invalid_input


# чи введено дійсне ім'я файлу?

якщо [[ $REPLY =~ ^[-[:alnum:]\._]+$ ]]; then echo "'$REPLY' є дійсним ім'ям файлу."

якщо [[ -e $REPLY ]]; тоді

echo "І файл "$REPLY" існує."

ще

echo "Однак файл "$REPLY" не існує."

fi


# чи введено число з плаваючою комою?

якщо [[ $REPLY =~ ^-?[[:digit:]]*\.[[:digit:]]+$ ]]; then echo "'$REPLY' є числом з плаваючою комою."

ще

echo "'$REPLY' не є числом з плаваючою комою."

fi


# чи є введення цілим числом?

якщо [[ $REPLY =~ ^-?[[:digit:]]+$ ]]; then echo "'$REPLY' є цілим числом."

ще

echo "'$REPLY' не є цілим числом."

#! / бін / баш

# read-validate: перевірка введення invalid_input () {

echo "Недійсний вхід '$REPLY'" >&2 вихід 1

}


read -p "Введіть один елемент > "


# вхід порожній (недійсний)

[[ -z $REPLY ]] && invalid_input


# введення містить кілька елементів (недійсне)

(( $(echo $REPLY | wc -w) > 1)) && invalid_input


# чи введено дійсне ім'я файлу?

якщо [[ $REPLY =~ ^[-[:alnum:]\._]+$ ]]; then echo "'$REPLY' є дійсним ім'ям файлу."

якщо [[ -e $REPLY ]]; тоді

echo "І файл "$REPLY" існує."

ще

echo "Однак файл "$REPLY" не існує."

fi


# чи введено число з плаваючою комою?

якщо [[ $REPLY =~ ^-?[[:digit:]]*\.[[:digit:]]+$ ]]; then echo "'$REPLY' є числом з плаваючою комою."

ще

echo "'$REPLY' не є числом з плаваючою комою."

fi


# чи є введення цілим числом?

якщо [[ $REPLY =~ ^-?[[:digit:]]+$ ]]; then echo "'$REPLY' є цілим числом."

ще

echo "'$REPLY' не є цілим числом."

Перевірка введення


fi ще

echo "Рядок "$REPLY" не є дійсним ім'ям файлу."

fi

fi ще

echo "Рядок "$REPLY" не є дійсним ім'ям файлу."

fi


Цей сценарій пропонує користувачеві ввести елемент. Далі предмет аналізується для визначення його вмісту. Як бачимо, сценарій використовує багато концепцій, які ми вже розглянули, включаючи функції оболонки, [[]], (( )), оператор контролю

&&, і if, а також здорову дозу регулярних виразів.


Найпопулярніші хмарні обчислення ОС на OnWorks: