while循环中的多个条件

while循环中的多个条件

我有 2 个完美运行的 bash 片段:

MODE=a;while [[ !("${MODE}" =~ ^[0-9]+$) ]];do read -p 'mode?' MODE;done

MODE=a;while [[ "${MODE}" != 'b' ]]; do read -p 'mode?' MODE;done   

我想合并这两个条件。我尝试遵循这篇文章的建议(while循环中的多个条件)。但它对我不起作用:

#带有 -o 运算符的单个 POSIX 测试命令:

MODE=a;while [ !("${MODE}" =~ ^[0-9]+$) -o "${MODE}" != 'b' ];do read -p 'mode?' MODE;done

#2 POSIX 测试命令用 || 连接到列表中:

MODE=a;while [ !("${MODE}" =~ ^[0-9]+$) ] || [ "${MODE}" != 'b' ]; do read -p 'mode?' MODE;done

#2 BASH 条件表达式 ||操作员:

MODE=a;while [[ !("${MODE}" =~ ^[0-9]+$) ]] || [[ "${MODE}" != 'b' ]]; do read -p 'mode?' MODE;done

#2 BASH 算术表达式用 || 连接到列表中:

MODE=a;while (( !("${MODE}" =~ ^[0-9]+$) )) || (( "${MODE}" != 'b' )); do read -p 'mode?' MODE;done

#带有 || 的单个 BASH 算术表达式操作员:

MODE=a;while (( !("${MODE}" =~ ^[0-9]+$) || "${MODE}" != 'b' )); do read -p 'mode?' MODE;done

谢谢大家!!

答案1

谢谢戈登!

MODE=a;while [[ !("${MODE}" =~ ^[0-9]+$) ]] && [[ "${MODE}" != 'b' ]]; do read -p 'mode?' MODE;done

相关内容