ウェブサイト検索

シェルスクリプト(.sh)をユーザー入力を待たせる方法 - Bash


Bashスクリプトを作成する際には、ユーザーに入力を促すことが重要です。これは「read」コマンドを使用して行うことができますが、スクリプトが一時停止してユーザーの応答を待つようにするのが難しい場合があります。本記事では、Bashでshスクリプトがユーザー入力を待つさまざまな方法を探りますので、興味がある方はこのガイドに目を通してください。

  • readコマンドを使用する
  • SELECTコマンドを使用する

readコマンドを使用してBashスクリプトがユーザー入力を待機する方法

bashでは、readコマンドを使用して.shスクリプトをユーザー入力を待機させることができます。このコマンドは、ターミナルからユーザー入力を読み取り、それを変数に保存することを許可します。その後、この変数を使用してスクリプト内でさまざまなアクションを実行できます。ここにこのコマンドを使用したbashスクリプトの例があります:

#!/bin/bash

echo "Enter your name?"

read nm

echo "Greetings, $nm!"

このスクリプトを実行すると、あなたの名前を入力するように求められます。名前を入力して Enter を押すと、スクリプトが挨拶を表示します。

ユーザー入力を待つためにselectコマンドを使用する方法

ユーザー入力を待つための別の方法は、selectコマンドを使用することです。「select」コマンドはbashの組み込みコマンドの一つで、ユーザーが選択できるシンプルなメニューを作成することができます。ここでは、このコマンドを使用したbashスクリプトの例を示します:

#!/bin/bash

weather_options=("sunny" "cloudy" "windy")
echo "Choose today's weather:"
select choice in "${weather_options[@]}"
do
  case $choice in
    "sunny")
      echo "You chose sunny."
      break
      ;;
    "cloudy")
      echo "You chose cloudy."
      break
      ;;
    "windy")
      echo "You chose windy."
      break
      ;;
    *)
      echo "Invalid option. Please choose a valid option."
      ;;
esac
done

スクリプトでは、最初に「weather_options」配列を定義し、3つのオプション「晴れ」「曇り」「風が強い」を設定します。次に、「echo」コマンドを使用して、ユーザーに今日の天気を選択するよう促します。続いて、「select」コマンドを使用して、「weather_options」配列の番号付きメニューを表示し、ユーザーがオプションを選択するのを待ちます。

「case」ステートメントは、ユーザーの選択肢それぞれを処理するために使用されます。ユーザーが「晴れ」、「曇り」または「風が強い」を選択した場合、スクリプトはどのオプションが選択されたかを示すメッセージを表示し、その後「break」ステートメントを使用してループを終了します。ユーザーが無効なオプションを入力した場合、スクリプトはそのオプションが無効であることを示すメッセージを表示し、ユーザーに有効なオプションを選択するよう促します。

結論

ユーザー入力を待つ.shスクリプトを作成することは、インタラクティブなスクリプトを作成する上で重要な部分です。これを達成する方法は二つあり、readコマンドとselectコマンドを使用することが含まれます。これらの方法を使用することで、ユーザーと対話し、適切に応答する強力なスクリプトを作成することができます。