如何在bash中检查字符串是否以方括号开头

3
我需要检查我的ini文件,并查看行是否以方括号开头,以确定新的配置已开始。在bash中有没有一种方法可以检查这个?我尝试过
line="[test]"

if [[ "$line" =~ [.* ]]; then
    echo "Got it!"
else
    echo "Nothing found"
fi

但是对我来说没有用。我猜想括号需要进行某种转义,但我无法找到任何相关信息。非常感谢您的帮助。


你不需要使用正则表达式,一个简单的glob模式就足够了:if [[ $line == \[* ]]; ... - glenn jackman
2个回答

6
为了实现这个,你需要在特殊字符[前加上反斜杠,改为如下形式:
line='[test]'

if [[ $line =~ ^\[ ]]; then
    echo "Got it!"
else
    echo "Nothing found"
fi

说明

  • [ 是开启一个正则表达式(REGEX)类的起始字符,例如 [0-9]
  • 引号在任何地方都是必需的,但不要在bash[[ ]]测试中使用引号

1
由于问题是“字符串以方括号开头”,所以缺少一个 ^ 符号! - F. Hauri - Give Up GitHub

0

使用正则表达式做这件事情太可怕了!请使用 bash 的通配符代替:

if [[ $line = [* ]]; then
    echo 'Got it!'
else
    echo "Nothing found"
fi

希望这能帮助您更有效地使用 bash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接