加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在bash中匹配正则表达式

发布时间:2020-12-15 21:17:17 所属栏目:安全 来源:网络整理
导读:我正在尝试将bash脚本的参数与正则表达式进行匹配 mykill.bash [-l] [-s SIGNO] pattern1 pattern2 我正在使用这个表达式: regex = ^(-l)?(s-ss[0-9]+)?(s[a-zA-Z0-9]+){1,2}$brif [[ $@ =~ $regex ]]; then echo 'cool' 例如./mykill.bash -l -s 33 abc
我正在尝试将bash脚本的参数与正则表达式进行匹配

mykill.bash [-l] [-s SIGNO] pattern1 pattern2

我正在使用这个表达式:

regex = ^(-l)?(s-ss[0-9]+)?(s[a-zA-Z0-9]+){1,2}$<br>
if [[ $@ =~ $regex ]]; then echo 'cool'

例如./mykill.bash -l -s 33 abc给出$@ =’ – l -s 33 abc’,它通过了debuggex.com测试(参见图像)
但它在我的脚本中不起作用

解决方法

你有bash问题,而不是正则表达式问题.

在bash中分配变量时:=周围没有空格.
然后,如果你想在正则表达式中保留反斜杠和空格,请在它周围使用单引号,否则bash会在早餐时使用它们.你不需要引用酷.并用fi关闭if.

regex='^(-l)?(s-ss[0-9]+)?(s[a-zA-Z0-9]+){1,2}$<br>'
if [[ $@ =~ $regex ]]; then echo cool; fi

或者使用条件的简单形式:

[[ $@ =~ $regex ]] && echo cool

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读