Считывание переменных с помощью read:
С помощью bash-команды read можно обрабатывать пользовательский ввод. Как правило, для этого сначала с помощью echo задается краткий текст, сообщающий пользователю, какой ввод ожидается (например, у/n, числовое значение и т. д.). При этом целесообразно использовать параметр -n, позволяющий вводить данные сразу же после текста echo, а не со следующей строки. При выполнении последующей команды read bash ожидает от пользователя ввода строки и нажатия клавиши Enter. Возьмем программу, в которой цикл while выполняется до тех пор, пока в переменной а не окажется последовательность символов, удовлетворяющая определенным условиям. В следующем примере мы видим, как работает эта программа: user$ readvar Введите число: a Не верный ввод, повторите ввод, пожалуйста Введите число: 13 13 После ввода информации с помощью read все содержимое переменной удаляется посредством подстановки параметров, если последовательность включает любые символы, кроме цифр, знаков «минус» и пробелов. Правда, эта система контроля не идеальна (в соответствии с ней допускается как последовательность символов 12-34-5, так и 1234), но все же весьма эффективна.
Скрипт readvar:
#! /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