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 シェル環境でのみ機能します。
Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.
LinkedIn