bash - 循环的正则表达式条件不适用于扩展测试
问题描述
我有一个基于正则表达式条件评估的循环:
until read -p "Enter oprator: " operator
[[ $operator =~ ^[+-*\/]$ ]] #doesn't work
do...
循环将一直运行,直到用户输入算术运算符(+、-、* 或 /)。当我输入这四个中的任何一个时,循环仍然运行。
我已经尝试过这种变体(即将正则表达式放在变量中,使用引号grep
),但似乎没有任何效果。
解决方案
^[+-*\/]$ ]]$
这里的问题是在括号表达式中间放置一个未转义的符号-
,它充当 和 之间的+
范围*
。
您可以使用这个正则表达式(无需/
在 BASH 正则表达式中转义):
[[ $operator =~ ^[-+*/]$ ]]
或者甚至更好,没有正则表达式使用 glob 匹配:
[[ $operator == [-+*/] ]]
推荐阅读
- javascript - 如何使具有相同类的多个下拉菜单的单个功能起作用?
- r - 从列表元素 r 中检索名称
- node.js - Nodejs:将行查询续集到postgis上的批量插入
- excel - 在excel中以百分比随机分配给员工的任务
- android - Android webview - shouldInterceptRequest 第一次没有被调用
- java - 如何从 spring-boot 应用程序中的 application.yml 文件中读取属性
- swift - LinkPresentation 视图未在 SwiftUI 中完全加载
- c# - 实体框架上下文不刷新
- python-3.x - 大摇大摆后无法在digitalocean上运行python应用程序
- jmeter - J Meter 未到达所需页面