安全な入力の読み取りと複数変数の読み取り
この最後のステップでは、2 つの高度なテクニックを学びます。
-
文字を画面に表示せずに安全な入力(パスワードなど)を読み取る
-
単一の 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!"
このスクリプトは以下のことを行います。
read
コマンドで -s
フラグを使用して、入力を隠します(パスワードやその他の機密情報に便利)。
read
コマンドに複数の変数名を指定することで、1 行の入力から複数の変数を読み取る方法を示します。
-d
フラグを使用して、カスタム区切り文字(デフォルトの改行文字の代わり)を指定する方法を示します。
-
Ctrl+O
を押してファイルを保存し、Enter
を押してファイル名を確認し、Ctrl+X
を押して nano を終了します。
-
スクリプトを実行してテストします。
./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、内部フィールド区切り文字)環境変数に基づいて分割されます。IFS のデフォルトは空白文字(スペース、タブ、改行)です。
-d
フラグを使用すると、入力の終了を示す区切り文字を変更することができます。デフォルトでは、read
は改行文字(Enter キーを押したとき)で入力を停止しますが、例のようにカンマなどの任意の文字に変更することができます。