2

我需要检查我的 ini 文件并检查该行是否以括号开头,以确定新配置是否已启动。有没有办法在bash中检查这个?我试过

line="[test]"

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

但这对我不起作用。我认为括号需要以某种方式转义,但我找不到任何关于如何转义的信息。任何帮助都感激不尽。

4

2 回答 2

5

为此,您应该反斜杠特殊字符[,因此:

line='[test]'

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

解释

  • [是打开REGEX类的起始字符,例如[0-9]
  • 到处都需要引号,但在bash [[ ]]测试中不需要
于 2012-11-21T12:53:43.990 回答
0

为此使用正则表达式太糟糕了!请改用bashglob:

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

希望这有助于bash更有效地使用。

于 2012-11-21T17:29:26.943 回答