Menu
Coddy logo textTech

スクリプトでのユーザー入力

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つのスクリプトを書くことができます。

challenge icon

チャレンジ

簡単

greeter.sh という名前のシェルスクリプトを作成し、ユーザーに好きな色を尋ねて、その入力を使ってメッセージを表示してください。

スクリプトは次のことを行うべきです:

  1. シェバング行(#!/bin/bash)で開始します
  2. read-p フラグを使用して、次のプロンプトを表示します:What is your favorite color?
  3. 入力を color という変数に格納します
  4. 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 フラグは、プロンプトテキストを引数として取り、その後に保存する変数名を指定します。

自分で試してみよう

ターミナル
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン