Считывание переменных с помощью read:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
С помощью bash-команды read можно обрабатывать пользовательский ввод. Как правило, для этого сначала с помощью echo задается краткий текст, сообщающий пользователю, какой ввод ожидается (например, у/n, числовое значение и т. д.). При этом целесообразно использовать параметр -n, позволяющий вводить данные сразу же после текста echo, а не со следующей строки. При выполнении последующей команды read bash ожидает от пользователя ввода строки и нажатия клавиши Enter. Возьмем программу, в которой цикл while выполняется до тех пор, пока в переменной а не окажется последовательность символов, удовлетворяющая определенным условиям. В следующем примере мы видим, как работает эта программа: user$ readvar Введите число: a Не верный ввод, повторите ввод, пожалуйста Введите число: 13 13 После ввода информации с помощью read все содержимое переменной удаляется посредством подстановки параметров, если последовательность включает любые символы, кроме цифр, знаков «минус» и пробелов. Правда, эта система контроля не идеальна (в соответствии с ней допускается как последовательность символов 12-34-5, так и 1234), но все же весьма эффективна. |
Скрипт readvar:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#! /bin/sh # Пример readvar: считывание числового значения a= # Удаление содержимого переменной а while [ -z "$a" ]; do echo -n "Введите число: " read a a=${a##*[^0-9,' ',-]*} # Удаление последовательностей символов, # содержащих любые символы, кроме 0-9, знака "минус" и пробела if [ -z "$a" ]; then echo "Неверный ввод, повторите ввод, пожалуйста " fi done echo $a |