シェルスクリプトの「オプション」はどのように機能しますか?

シェルスクリプトの「オプション」はどのように機能しますか?

ここで回答でいくつかのコードを見つけてニーズに合わせて調整しましたが、2つの質問があります。

質問1:Case ステートメントのコードが完了した後にオプションのテキストを表示するにはどうすればよいですか?これにより、ユーザーはオプションを再表示できます。

質問2:スクリプトを実行するときに各オプションが別々の行に表示されるようにすることはできますか?まだない。

options=(
        "quit/exit"
    "new rational db"
    "run php for rational codebase"
    "run php for playground codebase"
   )

select option in "${options[@]}"; do
  case "$REPLY" in
       1) break;;
       2) sudo -i -u db2inst1 bash -c "db2stop force;";;
       3) rm /tmp/createDb2*;;
       4)  ;;               
  esac
done

答え1

Q1:40文字を超える場合は、オプションの末尾にスペースを追加してください。例:

options=(
        "quit/exit"
    "new rational db"
    "run php for rational codebase"
    "run php for playground codebase                       "
   )

Q2:よりエレガントな方法があるかどうかはわかりませんが(では見たことがありませんhelp select)、次のようにすると機能します。

finished=
while test ! "$finished"; do
    select option in "${options[@]}"; do
      case "$REPLY" in
           1) finished=1;;
           2) sudo -i -u db2inst1 bash -c "db2stop force;";;
           3) rm /tmp/createDb2*;;
           4)  ;;               
      esac
      break
    done
done

関連情報