![shell 脚本中的“选项”如何工作?](https://linux22.com/image/24784/shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%9A%84%E2%80%9C%E9%80%89%E9%A1%B9%E2%80%9D%E5%A6%82%E4%BD%95%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
我在这里的一个答案中找到了一些代码,并根据我的需要进行了调整,但现在我有两个问题:
问题一: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