[英]Bash Script - compare string with variable spaces against regex
感谢您的时间和帮助我
我正在尝试制作一个脚本,将 grep 输出与我期望的结果进行比较。
grep 输出是:
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
由于每个服务器上的空格或制表符各不相同,因此我对这些空格使用正则表达式
[[:space:]]*
理论上它应该匹配正则表达式变量,但它不起作用。
有谁知道可能是什么问题?
function find_string () {
if [[ $cmd =~ $regex ]]; then
echo match
else
echo fail
fi
}
cmd=`stat /etc/crontab | grep root`
regex="^Access:[[:space:]]*(0600/-rw-------)[[:space:]]*Uid:[[:space:]]*([[:space:]]*0/[[:space:]]*root)[[:space:]]*Gid:[[:space:]]*([[:space:]]*0/[[:space:]]*root)$"
find_string "$cmd" "$regex"
我已经更正了脚本中的许多问题,包括在正则表达式字符串中转义括号。
请尝试以下操作:
#!/bin/bash
function find_string {
if [[ "$1" =~ $2 ]]; then
echo "match"
else
echo "fail"
fi
}
cmd=`stat /etc/crontab | grep root`
regex="^Access:[[:space:]]*\(0600/-rw-------\)[[:space:]]*Uid:[[:space:]]*\([[:space:]]*0/[[:space:]]*root\)[[:space:]]*Gid:[[:space:]]*\([[:space:]]*0/[[:space:]]*root\)$"
find_string "$cmd" "$regex"
注 - 运算符=~
对其左侧的字符串与其右侧的扩展正则表达式执行正则表达式匹配。 字符串应该被引用,但扩展的正则表达式不应该被引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.