bash 双括号中的否定表达式

bash 双括号中的否定表达式

我怎样才能否定表达式,因为以下匹配数字检查。

  elif [[ $pn =~ ^[[:digit:]]+$ ]]; then
    pfm -w "pn failed numeric inspection"

答案1

您可以使用否定测试

[[ ! $pn =~ ^[[:digit:]]+$ ]]

或者,在这种情况下,

[ -z "$pn" ] || [[ $pn =~ [^[:digit:]] ]]

即“为$pn空还是包含非数字?”

或者,通过通配符测试,

[ -z "$pn" ] || [[ $pn == *[![:digit:]]* ]]

或者,使用扩展的通配模式,

[[ $pn != +([[:digit:]]) ]]

相关内容