Чтение конфиденциального ввода и нескольких переменных
В этом последнем шаге вы узнаете две более продвинутые техники:
-
Чтение защищенного ввода (например, паролей) без отображения символов на экране
-
Чтение нескольких переменных с помощью одной команды read
-
Откройте свой скрипт для редактирования:
nano input_reader.sh
-
Замените существующее содержимое следующим кодом:
#!/bin/bash
## Script demonstrating secure input and multiple variable reading
## Secure input reading with -s flag (no echo)
echo "Secure Input Example:"
read -p "Username: " username
read -s -p "Password: " password
echo ## Add a newline after password input
echo "Username entered: $username"
echo "Password length: ${#password} characters"
## Reading multiple variables at once
echo -e "\nMultiple Variable Example:"
read -p "Enter first name, last name, and age (separated by spaces): " first_name last_name age
echo "First name: $first_name"
echo "Last name: $last_name"
echo "Age: $age"
## Reading with a custom delimiter
echo -e "\nCustom Delimiter Example:"
read -p "Enter comma-separated values: " -d "," value1
echo ## Add a newline
echo "First value before comma: $value1"
echo -e "\nThank you for completing this lab on Linux input reading!"
Этот скрипт:
- Использует флаг
-s с командой read для скрытия ввода (полезно для паролей или другой конфиденциальной информации)
- Показывает, как прочитать несколько переменных из одной строки ввода, передав несколько имен переменных в команду
read
- Демонстрирует флаг
-d для указания пользовательского разделителя (вместо стандартного символа новой строки)
-
Сохраните файл, нажав Ctrl+O, затем нажмите Enter, чтобы подтвердить имя файла, и выйдите из nano, нажав Ctrl+X.
-
Запустите скрипт для тестирования:
./input_reader.sh
Пример вывода (ваши вводы будут отличаться):
Secure Input Example:
Username: john_doe
Password:
Username entered: john_doe
Password length: 8 characters
Multiple Variable Example:
Enter first name, last name, and age (separated by spaces): John Doe 30
First name: John
Last name: Doe
Age: 30
Custom Delimiter Example:
Enter comma-separated values: test,
First value before comma: test
Thank you for completing this lab on Linux input reading!
Безопасность имеет важное значение при обработке конфиденциальной информации, такой как пароли. Флаг -s гарантирует, что введенные символы не отображаются на экране. Обратите внимание, что в примере с паролем скрипт показывает только длину пароля для подтверждения, а не сам пароль.
Чтение нескольких переменных сразу может сделать ваши скрипты более эффективными и удобными для пользователя. Когда команде read передаются несколько имен переменных, она разбивает ввод на основе переменной окружения IFS (Internal Field Separator), которая по умолчанию представляет собой пробелы (пробелы, табуляции и новые строки).
Флаг -d позволяет вам изменить разделитель, который сигнализирует об окончании ввода. По умолчанию команда read останавливается при встрече символа новой строки (когда вы нажимаете Enter), но вы можете изменить его на любой символ, например, запятую в примере.