3 bash
这个表达式模式'^[0-9]+$'
检查什么?
#!/usr/bin/env bash
if [[ $VAR =~ '^[0-9]+$' ]]; then
execute code
fi
Run Code Online (Sandbox Code Playgroud)
正则表达式^[0-9]+$
将匹配非空的连续数字字符串,即仅由数字组成的非空行。如果你想[[ ... =~ there ]]
在bash
3.2 或更高版本中使用那个正则表达式,那么你也应该不加引号,即^[0-9]+$
代替'^[0-9]+$'
. 您的代码片段可能应该如下所示:
#!/usr/bin/env bash
if [[ "${VAR}" =~ ^[0-9]+$ ]]; then
#execute code
fi
Run Code Online (Sandbox Code Playgroud)
当 VAR 从开始 (^) 到结束 ($) 匹配一个或多个 (+) 数字 [0-9] 时,正则表达式将匹配 VAR 的内容。该行必须仅包含数字以匹配 [0-9]+ 两端的 ^ 和 $。
用于测试 if 正则表达式与一系列输入的比较的程序
$ cat flub
#!/usr/bin/bash
for VAR in 3a3 '^[0-9]+$' 2 1919181818 flub 282_2828 '38938 2828' '3939.' '.3939'
do
echo -n "Testing $VAR : "
if [[ "$VAR" =~ ^[0-9]+$ ]]; then
echo "$VAR" matches
else
echo
fi
done
Run Code Online (Sandbox Code Playgroud)
输出
$ ./flub
Testing 3a3 :
Testing ^[0-9]+$ :
Testing 2 : 2 matches
Testing 1919181818 : 1919181818 matches
Testing flub :
Testing 282_2828 :
Testing 38938 2828 :
Testing 3939. :
Testing .3939 :
Run Code Online (Sandbox Code Playgroud)
而用单引号引用的扩展正则表达式部分只匹配文字字符串:
$ cat flub
#!/usr/bin/bash
for VAR in 3a3 '^[0-9]+$' 2 1919181818 flub 282_2828 '38938 2828' '3939.' '.3939'
do
echo -n "Testing $VAR : "
if [[ "$VAR" =~ '^[0-9]+$' ]]; then
echo "$VAR" matches
else
echo
fi
done
$ ./flub
Testing 3a3 :
Testing ^[0-9]+$ : ^[0-9]+$ matches
Testing 2 :
Testing 1919181818 :
Testing flub :
Testing 282_2828 :
Testing 38938 2828 :
Testing 3939. :
Testing .3939 :
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
30509 次 |
最近记录: |