gpt4 book ai didi

regex - 在 bash 中匹配正则表达式

转载 作者:行者123 更新时间:2023-11-29 09:10:20 28 4
gpt4 key购买 nike

我正在尝试将 bash 脚本的参数与正则表达式相匹配

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

我正在使用这个表达式:

regex = ^(-l)?(\s-s\s[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 测试(见图片但它在我的脚本中不起作用

enter link description here

最佳答案

您遇到的是 bash 问题,而不是正则表达式问题。

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

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

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

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

关于regex - 在 bash 中匹配正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18779348/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com