忍者ブログ

プログラミングの練習

プログラミングの問題やプログラミング関連知識、ソフトウェアのテストについてのブログです

【Bash入門】read -p で対話型スクリプトを作成する|標準入力とプロンプト表示の基本

Bashスクリプトでユーザーからのキーボード入力を受け取りたい場合、シェル組み込みコマンドの read を使用します。

今回は、オプション -p を使ってプロンプトメッセージを表示しながら変数へ代入する、最も基本的かつ便利な書き方を解説します。





1. サンプルコードと実行例

キーボードから入力された値を変数に格納し、そのまま画面へ出力するシンプルなスクリプトです。


  • ① ソースコード(sample.sh)

    #!/bin/bash

    read -p "Enter number: " var1

    echo $var1

  • ② 実行結果

    $ ./sample.sh

    Enter number: 2

    2



2. read -p のポイント解説

なぜ read -p を使うのか、その仕組みとメリットを整理します。


  • Point:プロンプト表示と入力を1行で記述できる

    ・-p オプション:入力を促すプロンプト文字列(例:"Enter number: ")を画面に表示します。

    ・変数への格納:入力された値が直後の変数名(例:var1)へ自動的に代入されます。

    ・通常であれば echo -n "Enter number: " と read var1 の2行に分けて書く処理を、1行にすっきり集約できるのが最大のメリットです。

【解説と補足ポイント:実務で使える組み合わせて覚えたいオプション】



■ パスワード入力用の非表示(-s オプション)

パスワードやAPIキーなどの機密情報を入力させる場合、入力文字を画面に表示させない -s(silent)オプションと組み合わせます。

read -sp "Enter Password: " password


■ タイムアウトの設定(-t オプション)

指定した秒数以内に利用者が入力しなかった場合、処理を自動で進めたり終了させたりする設定が可能です。

read -t 10 -p "10秒以内に入力してください: " var1



3. まとめ

対話型シェルスクリプトを作成する際は、read -p "メッセージ" 変数名 の構文を覚えておくと非常にスマートに記述できます。


必要に応じて非表示化(-s)や制限時間(-t)などのオプションと組み合わせ、ユーザーフレンドリーなスクリプトを作成しましょう。


PR