HOWTO · Bash

Bash でのユーザー入力

このチュートリアルでは、Bash でのユーザー入力について説明します。

このページの内容

プログラムやスクリプトでは、ユーザー入力を取得することが非常に重要です。このようにして、ユーザーはシステムと対話し、システムに入力を提供します。

他のプログラミング言語やスクリプト言語と同様に、Bash はユーザー入力の取得をサポートしています。ユーザー入力を受け取る一般的な形式は、YOUR_VARIABLE を読むです。

ユーザーが必要な入力の種類を知らせるためのタグを作成する場合、形式は read -p "YOUR INSTRUCTION HERE : " YOUR_VARIABLE のようになります。この記事では、Bash のシステムにユーザー入力を取得する方法を説明します。

また、トピックを簡単にするために、トピックに関連するいくつかの例と説明が表示されます。

Bash でのユーザー入力

すでに説明したように、ユーザー入力をシステムに取り込むには、キーワード read を使用する必要があります。これは、ユーザー入力を読み取る Bash の組み込みキーワードです。

以下の例では、ユーザー入力を受け取り、ユーザー入力を含む出力をユーザーに提供します。この例のコードは次のようになります。

read YOUR_VAR
echo "You entered the number $YOUR_VAR"

上記は非常に単純な例を共有しており、それを介して入力を取得し、以下のような出力を提供します。

50
You entered the number 50

しかし、ユーザーはここで数値を入力する必要があることをどのようにして知るのでしょうか。ここで数値を入力する必要があることをユーザーに指示する必要があります。

これを行うには、以下の例に従う必要があります。これは、前の例と似ていますが、高度なものです。この例のコードは次のようになります。

read -p "Please enter a number: " YOUR_VAR
echo "You entered the number $YOUR_VAR"

この例を実行すると、スクリプトは最初に Please enter a number: というメッセージを表示し、ユーザーが数値を入力すると、次の出力が表示されます。

Please enter a number: 50
You entered the number 50

ユーザーからの YES または NO 入力の取得

以下に、YES または NO の間のユーザー入力のみを取得する例を示します。この例のコードは次のようになります。

while true; do
    read -p "Do you wish to continue? " yn
    case $yn in
        [Yy]* ) echo "You have selected YES!! ";;
        [Nn]* ) echo "You have selected NO!! ";;
        * ) echo "Please answer between YES or NO";;
    esac
done

この例では、while ループと条件ステートメント case を使用しました。read -p "Do you wish to continue the program? " yn の行からユーザー入力を受け取ります。

[Yy]*)echo "You have selected YES!! ";; および [Nn]* ) echo "You have selected NO!! ";; ユーザー入力を確認します。

入力が Y または y の場合、出力 You has selected YES が表示され、入力が N または n の場合、出力 You hasselected NO が表示されます。

最後に、ユーザーが* ) echo "Please answer YES or NO";; という行で予期しない入力を行った場合のデフォルト出力を設定します。コードを実行すると、次のような出力が得られます。

Do you wish to continue the program? Y
You have selected YES!!
Do you wish to continue the program? Y
You have selected YES!!
Do you wish to continue the program? N
You have selected NO!!

この記事で使用されているすべてのコードは Bash で記述されていることに注意してください。Linux シェル環境でのみ機能します。