Команда read
разделит ваш ввод по всему, что в $IFS
По умолчанию это пробел , поэтому просто сделаем это:
read my_string my_number
разделит ваш ввод на две части, разделенные пробелом. Иногда вы увидите это:
read my_string my_number garbage
Потому что read прочитает всю оставшуюся строку в последнюю переменную независимо от того, сколько у вас было параметров. Например, если бы я имел:
read my_string my_number
И пользователь вставил:
this 1 foo foo foo!
$my_string
будет this
, но $my_number
будет 1 foo foo foo!
Помещая другую переменную (в нашем случае garbage
), я устраняю эту проблему. Если я поставлю:
read my_string my_number garbage
И пользователь вставил:
this 1 foo foo foo!
$my_string
будет this
, $my_number
будет 1
, а $garbage
будет foo foo foo!
.
Простая тестовая программа:
while read my_string my_number garbage
do
echo "The string is '$my_string'. The number is '$my_number'."
echo "Note there's no error checking of input."
echo "That's your job, Bunky."
done