While循环使用(不在)bash

Odi*_*din 2 bash shell

我试图同时检查输入变量的值。例如,while仅在option的值为1或2时存在。

while option not in 1 2
do :
    read -p "Please choose an option" option
done
Run Code Online (Sandbox Code Playgroud)

如何在bash中完成?

[Duplicate]这不是重复项,因为这样一个标记为重复项的示例考虑比较两个字符串,而一端没有多个选项。

Wil*_*ell 6

经典方式是:

while ! { test "$option" = 1 || test "$option" = 2; }; do ...

但是更干净的方法是使用case语句:

while :; do
  case "$option" in 
    1|2) break ;;
    *) ... ;;
  esac
done
Run Code Online (Sandbox Code Playgroud)