スクリプトでのユーザー入力
CoddyのTerminalジャーニー「基礎」セクションの一部 — レッスン 69/82。
変数は便利ですが、スクリプトの実行中にユーザーに情報を尋ねたい場合もあります。read コマンドはスクリプトを一時停止し、ユーザーが何かを入力するのを待ち、その入力を変数に格納します。
これがその仕組みです:
#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"このスクリプトが実行されると、質問を表示し、ユーザーが名前を入力して Enter キーを押すのを待ち、それから挨拶します。read コマンドは、ユーザーが入力したものを変数 name に格納します。
-p フラグを使用することで、プロンプトをよりクリーンにできます。このフラグは、プロンプトメッセージと入力を同じ行に結合します:
#!/bin/bash
read -p "Enter your name: " name
echo "Hello, $name!"これは Enter your name: を表示し、同じ行で入力待ちとなり、より洗練された見た目になります。-p フラグはプロンプトテキストをその引数として受け取り、その後にその入力を保存する変数名が続きます。
ユーザー入力により、スクリプトはインタラクティブで適応性のあるものになります。値をハードコーディングする代わりに、ユーザーが実行するたびに提供する内容に基づいて異なる動作をする1つのスクリプトを書くことができます。
チャレンジ
簡単greeter.sh という名前のシェルスクリプトを作成し、ユーザーに好きな色を尋ねて、その入力を使ってメッセージを表示してください。
スクリプトは次のことを行うべきです:
- シェバング行(
#!/bin/bash)で開始します readに-pフラグを使用して、次のプロンプトを表示します:What is your favorite color?- 入力を
colorという変数に格納します echoを使って次のように印刷します:Nice! [color] is a great color!(ここで [color] はユーザーの入力です)
スクリプトを実行可能にし、それを実行してください。プロンプトが表示されたら、blue を回答として入力してください。
出力は次のようになるべきです:
What is your favorite color? blue
Nice! blue is a great color!ヒント:
echoにリダイレクトを使ってスクリプトを1行ずつ構築します。プロンプトと入力のキャプチャにはread -p "What is your favorite color? " colorを使用し、結果の表示にはecho "Nice! $color is a great color!"を使用します。
チートシート
read コマンドは、スクリプトを一時停止し、ユーザー入力を待ち、それを変数に格納します:
#!/bin/bash
echo "What is your name?"
read name
echo "Hello, $name!"-p フラグを使用すると、プロンプトと入力を同じ行に表示できます:
#!/bin/bash
read -p "Enter your name: " name
echo "Hello, $name!"-p フラグは、プロンプトテキストを引数として取り、その後に保存する変数名を指定します。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。