在 bash 中,我可以使用 Posix 字符类,例如
digit="[[:digit:]]"
还有
[[:alnum:]], [[:alpha:]], [[:ascii:]], [[:punct:]]
我可以使用什么模式来匹配以 - 开头但不是负整数的内容?
我不能使用否定类[^[:digit:]]
(不是数字的字符),因为
-2345dsfg2546
它不是负整数。
答案1
第一个字符是连字符,字符串的其余部分包含非数字:
if [[ $str == -* && ${str:1} == *[^[:digit:]]* ]]; then
echo "str is not a negative integer
fi
更简单
if [[ $str == -*[^[:digit:]]* ]]; then
作为正则表达式
if [[ $str ~= ^-.*[^[:digit:]] ]]