【发布时间】:2016-08-13 15:25:13
【问题描述】:
#!/bin/bash
i="a001"
if ! [[ $i =~ "a[0-9]{3}" ]]; then
echo "success"
fi
输入i="a001" 使其成功,尽管它匹配a[0-9]{3} 模式并且不应执行if 语句。到底是怎么回事?在我看来,这是编译器错误。这是我从昨天开始就没有解决的更大问题的一部分。
【问题讨论】:
-
bash不是编译器 - 它是解释器 -
好的,但是我的正则表达式是怎么回事?在 PHP 等其他语言中没有这样的问题
-
这个
if !在我看来很像 IF NOT,仅在失败时才回显“成功”? -
我试图写
if not但它没有编译,现在它似乎可以与 Ignacio Vazq 发布的解决方案一起使用...... -
@user3162968,我认为 sln 是在询问您的逻辑是否真实地表达了您的意图,而不是说
!是无效或不正确的语法(实际上不是)。 failure 与 success 情况相匹配是不寻常的,因为这意味着您完全了解所有可能的错误情况,这不是典型的情况。