
Можете ли вы привести пример скрипта, в котором пользователю предлагается ввести имя, фамилию и возраст. А затем проверить, содержат ли имя и фамилия только буквы, а возраст только цифры? И если информация верна, она добавляется в файл.
решение1
решение2
Используйте echo
для отображения сообщения и read
для чтения строки ввода. Это встроенные функции оболочки, поэтому обратитесь к руководству по оболочке для получения дополнительной информации.
echo "What is your name?"
read -r name
echo "What is your age?"
read -r age
Чтобы проверить возраст, проверьте, содержит ли он символы, отличные от цифры. Единственная переносимая встроенная конструкция оболочки, которая позволяет это сделать case
(некоторые оболочки имеют расширения для сопоставления регулярных выражений).
case $age in
*[!0-9]*) echo 1>&2 "Your age must consist of digits only."; exit 2;;
esac
Чтобы проверить имя, проверьте, содержит ли оно непечатаемые символы. (Обратите внимание, чтоимена могут содержать практически произвольные символы; кроме того, не у всех есть «фамилия»: рассматривайте имя как произвольную строку.)
case $name in
*[![:print:]]*) echo 1>&2 "Your name must consist of printable characters only."; exit 2;;
esac
решение3
Если это не домашнее задание, я бы посоветовал рассмотреть вариант использования PERL или Python и просто записать PERL следующим образом:
$name = <STDIN>;
chomp $name;
($forename, $surname) = split(<regex>, $name);
if($surname =~ /<regex>/) execute something
Python будет похож, поэтому для продолжения просто посмотрите наРегулярное выражение PERL. Сценарий не совсем точен, но вы поняли идею.