shell 脚本中的“选项”如何工作?

shell 脚本中的“选项”如何工作?

我在这里的一个答案中找到了一些代码,并根据我的需要进行了调整,但现在我有两个问题:

问题一: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

相关内容