Bashスクリプトでユーザー入力を読み取る方法|readコマンドの使い方
Linuxのreadコマンドは、コマンドラインからユーザーの入力を受け取るためのコマンドです。スクリプトの実行時にユーザーとの対話的な処理を行いたい場合に非常に便利です。
readコマンドの基本構文は次のとおりです。
read [オプション] 変数名
読み取った値は、変数名の先頭に$を付けて参照します(例:$variable_name)。
Bashスクリプトでユーザー入力を読み取ってみよう
まず、拡張子が.shのファイルを作成します。
touch user_input.sh
次に、お好みのエディタでそのファイルを開き、以下のように記述します。
#!/bin/bash
echo "名前を入力してください:"
read name
echo "年齢を入力してください:"
read age
echo "こんにちは、${name}さん。あなたは${age}歳です"
このスクリプトは、ユーザーの名前と年齢を入力として受け取ります。
ポイント: readで読み込む変数に型を指定する必要はありません。Bashではすべての変数が文字列として扱われます。
スクリプトを実行するには、ターミナルを開いて次のコマンドを入力します。
$ sh user_input.sh
名前を入力してください:
DevQA
年齢を入力してください:
12
こんにちは、DevQAさん。あなたは12歳です
readコマンドでプロンプトメッセージを表示する(-pオプション)
readコマンドで入力を促すメッセージ(プロンプト)を表示したい場合は、-pオプションを使用します。
$ read -p "ユーザー名を入力してください: " username
入力内容を画面に表示しない方法(-sオプション)
入力された文字を画面に表示したくない場合は、-s(サイレントモード)オプションを併用します。パスワードなど、第三者に見られたくない情報を読み取るときに特に役立ちます。
$ read -sp "パスワードを入力してください: " password
これらのオプションを組み合わせたBashスクリプトは、次のようになります。
#!/bin/bash
read -p "ユーザー名を入力してください: " username
read -sp "パスワードを入力してください: " password
echo -e "\nあなたのユーザー名は ${username}、パスワードは ${password} です"
実行結果は以下のとおりです。
$ sh user_input.sh
ユーザー名を入力してください: devqa
パスワードを入力してください:
あなたのユーザー名は devqa、パスワードは secret です
補足1:変数名を省略した場合の挙動
変数名を指定せずにreadを実行すると、入力された値はデフォルトで組み込み変数$REPLYに格納されます。
#!/bin/bash
read -p "好きなプログラミング言語を入力してください: "
echo "あなたが入力したのは: $REPLY です"
補足2:複数の値を一度に読み取る
readコマンドには複数の変数を指定することもできます。この場合、入力された値は空白文字で区切られ、左から順に各変数へ代入されます。
read name hobby
echo "${name}さんの趣味は${hobby}です"
-pや-sといったオプションを上手に活用すれば、対話的で使いやすいシェルスクリプトを簡単に作成できます。ぜひ実際に手を動かして試してみてください。
-
Bashのsleepコマンド徹底解説 – シェルスクリプトをN秒間待機させる方法(実行例付き)
シェルスクリプトを書いていると、処理を進める前に一定時間待機させたい場面に出くわすことがあります。たとえば、あるプロセスの完了を待ちたい場合や、失敗したコマンドを再試行する前に間隔を空けたい場合などがその代表例です。そんなときに役立つのが、シンプルで扱いやすい sleep コマンドです。Bashのsleepコマンドの基本的な使い方sleep コマンドは非常に汎用性が高く、構文もとてもシンプルです。使い方は sleep N と入力するだけ。これだけでスクリプトは N 秒間一時停止します。N には正の整数または小数(浮動小数点数)を指定できます。まずは基本的な例を見てみましょう。echo Hell
-
Bashスクリプトでwhileループを使ってファイルを読み込むさまざまな方法
この記事では、Bashスクリプトでwhileループを使ってファイルを読み込む方法について詳しく解説します。ファイルの読み込みはプログラミングにおいて非常によく使われる操作であり、複数の方法とそれぞれの効率性を理解しておくことが重要です。Bashでは1つのタスクをさまざまな方法で実現できますが、常に最適な手段が存在するため、それを選ぶようにしましょう。whileループの基本ファイルの内容を読み込む方法を見る前に、まずwhileループの仕組みを簡単に復習しておきましょう。whileループは条件を評価し、条件が真である限り、指定されたコードブロックを繰り返し実行します。while [ CONDITI