Bash Regex检查字符串的第一个字符是否为数字

时间:2016-04-07 11:15:57

标签: regex bash shell

我正在编写一个使用跟踪路由的脚本。我正在迭代遍历路径的每一行,然后遍历每个单词(由空格分隔)。但是,有时跟踪路由返回*字符,这会在回显时产生问题(输出文件名)。

我一直在摆弄RegEx,到目前为止我已经想到了这个:

if [[ $item =~ ^\d ]];

项目是跟踪路线的一部分。

对于跟踪路线中的每个项目,我只想检查第一个字符是否等于数字,然后相应地继续。

2 个答案:

答案 0 :(得分:5)

POSIX Regular Expressions(Bash使用)不支持

\d。您需要将其替换为[0-9],如下所示:

if [[ $item =~ ^[0-9] ]];

查看this StackOverflow answer

还可以使用[:digit:]来简化阅读:

if [[ $item =~ ^[[:digit:]] ]];

答案 1 :(得分:1)

不需要使用正则表达式就足够了:

[[ $item == [0-9]* ]] && echo "it starts with a digit"

您也可以使用:

[[ $item == [[:digit:]]* ]]