Bash正则表达式检查字符串的第一个字符是否为数字

hea*_*oul 0 regex bash shell

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

我一直在摆弄RegEx,到目前为止,我已经提出了这个建议:

if [[ $item =~ ^\d ]];
Run Code Online (Sandbox Code Playgroud)

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

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

Kas*_*Lee 5

\dPOSIX正则表达式(由Bash使用)中不受支持。您需要[0-9]像这样替换它:

if [[ $item =~ ^[0-9] ]];
Run Code Online (Sandbox Code Playgroud)

看看这个StackOverflow答案

也可以[:digit:]用来使其更易于阅读:

if [[ $item =~ ^[[:digit:]] ]];
Run Code Online (Sandbox Code Playgroud)