【Linux】シェルスクリプトでユーザーからの入力を取得:read

Linux

どーも!marusukeです!

ユーザーからの入力(標準入力)を取得できるコマンドreadについて説明します!

readコマンドでできること

read [オプション] <変数名>

readコマンドは、ユーザーからの入力(標準入力)を取得して、指定した変数にその値を格納するために使用されます

ユーザーからの入力が必要なシェルスクリプトや対話式のスクリプトで利用され、変数に対話的に値を割り当てたりすることができます

readコマンドの使用例

1. 基本的な入力の取得

変数名を指定して、ユーザーの入力をその変数に格納します。

echo "Enter your name: "
read name
echo "Hello, $name!"
  • ユーザーが入力した名前がname変数に格納され、Hello, <name>!の形式で表示されます

2. 複数の変数に入力を分割して格納

ユーザーが入力した内容を、スペースで分割し複数の変数に格納します

echo "Enter your first and last name: "
read first_name last_name
echo "Hello, $first_name $last_name!"
  • first_namelast_nameの2つの変数に、スペースで区切られた値を格納します

3. デフォルトプロンプトなしでの入力

-pオプションを使用することで、プロンプトメッセージを指定できます(echoでのメッセージ表示が不要になります)

read -p "Enter your age: " age
echo "You are $age years old."
  • -pオプションにより、Enter your age:というプロンプトが表示され、ユーザーが入力した年齢がage変数に格納されます

4. パスワード入力などの非表示入力

-sオプションを使用すると、入力した文字が画面に表示されなくなります(パスワードの入力に便利です)

read -sp "Enter your password: " password
echo -e "\nPassword saved."
  • -sオプションにより、入力が画面に表示されずにpassword変数に格納されます

5. タイムアウト付きの入力

-tオプションを使用すると、入力の待ち時間を秒単位で指定できます。指定した時間が経過すると自動的にタイムアウトします

read -t 5 -p "Enter your username within 5 seconds: " username
echo "Username: $username"
  • ユーザーが5秒以内に入力しない場合、変数usernameには値が格納されません

6. 最大文字数の指定

-nオプションを使用して、入力可能な文字数を制限します

read -n 3 -p "Enter a 3-letter code: " code
echo -e "\nCode entered: $code"
  • -n 3により、最大3文字までの入力しか受け付けません

主なオプション

オプション説明
-pメッセージを表示して入力を促します。
-s入力内容を画面に表示せずに入力(パスワード入力など)。
-t入力のタイムアウトを秒数で指定します。
-n入力の最大文字数を指定します。
-rバックスラッシュによるエスケープを無効にします。
-a配列として入力を格納します。

まとめ

readコマンドは、シェルスクリプトでユーザーからの入力を受け取り、変数に格納するための便利なコマンドです。パスワード入力の非表示や入力タイムアウトなどのオプションも活用することで、対話的なシェルスクリプトを作成できます

以上です!

ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました