Първо проверете основния синтаксис на командата “read”:
прочетете [опция] променливаИзползването на командата „четене“ означава, че взаимодействате с Bash, за да получите информация от потребителя. Запазва стойността в променлива, но без „$" знак. Ще можете да разберете по-добре тази концепция с пример.
Пример 1: Използване на командата “read” в Bash Script
За да разгледаме по-задълбочено командата “read”, ще създадем прост скрипт, който ще поиска името на потребителя. Първо отворете всеки текстов редактор; за този урок използвам текстовия редактор Vim поради многото му полезни функции. За да инсталирате Vim, изпълнете следната команда в терминала:
$ sudo apt install vimСлед това въведете следното в текстовия файл:
#! \ bin \ bashехо „Моля, въведете името си“
прочетете име
echo „Вашето име е“ $ name
Запазете файла с произволно име, след което натиснете Esc и напишете „: w readcom.ш.”За да стартирате скрипта, издайте следната команда:
$ bash readcom.шГорният скрипт ще помоли потребителя да напише името му. След това командата “read” ще запази данните от потребителя. Следващият ред ще отпечата името, което потребителят въведе.
Пример 2: Опростяване на кода с помощта на оператор “prompt”
Горният пример може да бъде опростен допълнително, като се използва „подкани" оператор. Нека препишем горния пример, за да разберем кода:
#! / bin / bashпрочетете -p име „Моля, въведете вашето име“
echo „Вашето име е“ $ name
Пример 3: Скриване на потребителския вход с помощта на оператора “секретен / безшумен”
„-сФлаг ”може да се използва за скриване на въведеното от потребителя. Следващият пример за скрипт на Bash ви показва как да използвате оператора “-s”:
#! / bin / bashпрочетете -p „Моля, въведете вашето потребителско име“ потребителско име
read -s -p “Моля, въведете паролата си” $ парола
Пример 4: Ограничаване на дължината на символа
„-нФлаг ”може да се използва за добавяне на ограничение към броя на символите, които потребителят може да въведе.
#!/ bin / bashпрочетете -n 8 -p „Моля, въведете вашето потребителско име, което не надвишава 8 знака“ потребителско име
echo „Вашето потребителско име е“ $ username
С опцията “-n” потребителят все още може да пише по-малко от осем знака. За допълнително ограничаване на дължината на въвеждане, „-нМоже да се използва флаг, който ограничава отговора на потребителя до точно осем знака.
Пример 5: Получаване на входа в масив
Потребителският вход може също да бъде взет в масив с „-а”Флаг. Например, за да получим едновременно името, възрастта и имейл адреса на потребителя, тогава можем да използваме масив. Нека разгледаме един пример:
#! / bin / bashecho „Моля, въведете вашето име, възраст и имейл“
прочетете-име на масив възраст имейл
echo „Вашето име, възраст и имейл адрес са: $ array [@] name age email“
echo „Вашето име и възраст са: $ array [@]: 0: 1 name age“
echo „Вашият имейл адрес е: $ array [2] имейл“
- „$ Array [@]“ ще се върти през всички променливи.
- За да прегледате индексите от 0 до 1, използвайте „$ array [@]: 0: 1“ с имената на променливите.
- За да получите стойността на определена променлива в определен индекс, използвайте „$ array [2]“ с името на променливата.
Пример 6: Добавяне на време за изчакване към командата “read”
Както показва името на командата, може да се добави изчакване като условие за четене на кода с помощта на флага „-t“, което кара потребителя да въвежда информация за конкретно време. В противен случай програмата ще премине към следващия ред код.
#! \ bin \ bashехо „Каква е столицата на Япония? Отговорете за 5 секунди ”
прочетете -t 5 отговор
ако [„$ answer“ = „tokyo“] || [„$ Answer“ = „Токио“];
тогава
echo „Вашият отговор е верен!”
друго
echo „Вашият отговор е грешен!”
fi
Заключение
Получаването на вход от потребителски вход е една от най-важните части на програмирането, което прави вашите програми по-интерактивни. Тази статия ви показа как да използвате командата “read”, една от ключовите команди в Bash скриптове. В тази статия научихте за някои от различните подходи, които можете да използвате с командата “read”, от основни оператори на флагове до разширени оператори.