Hack 31. PS3 - シェルスクリプト内の“select”に使用されるプロンプト

シェルスクリプト内で select ループ用の独自プロンプトを定義することができます。
以下で示すように PS3 環境変数を使用します。

PS3 を使用しないシェルスクリプトと出力:

ramesh@dev-db ~> cat ps3.sh

select i in mon tue wed exit
  do
    case $i in
      mon) echo "Monday";;
      tue) echo "Tuesday";;
      wed) echo "Wednesday";;
      exit) exit;;
    esac
  done

ramesh@dev-db ~> ./ps3.sh
1) mon
2) tue
3) wed
4) exit
#? 1
Monday
#? 4

[Note: これは select コマンドプロンプトにデフォルトの "#?" を表示します。]

PS3 を使用するシェルスクリプトと出力:

ramesh@dev-db ~> cat ps3.sh

PS3="Select a day (1-4): "
select i in mon tue wed exit
do
  case $i in
    mon) echo "Monday";;
    tue) echo "Tuesday";;
    wed) echo "Wednesday";;
    exit) exit;;
  esac
done

ramesh@dev-db ~> ./ps3.sh
1) mon
2) tue
3) wed
4) exit
Select a day (1-4): 1
Monday
Select a day (1-4): 4

[Note: これは select コマンドプロンプトとして変更した "Select a day (1-4):" を表示します。]