用shell判断一个字符串是不是全为数字 & 取字符串的第N个字符(转)

(1)判断一个字符串是不是全为数字

01
02
03
04
05
06
07
08
09
10
11
#!/bin/sh
  
# 该变量就是要判断的变量
VAR= "1234908"
  
RET=` expr match $VAR "[0-9]*$" `
if [ ${RET} -gt 0 ]; then
   echo "It is a Number!"
else
   echo "Not a Number!"
fi

文章来源:http://www.codelast.com/

另外要注意:用这种方式来判断负数的时候,也认为不是全为数字的,因为负数中带了一个负号,就不是数字

 

(2)取字符串的第1个字符

1
2
VAR= "[Sun Feb 20 03:10:51 2011]"
echo ${VAR:0:1}

这样输出的就是第一个字符“[”了。详细用法请看这个链接

章来:http://www.codelast.com/

(3)从一个字符串的尾部开始,删除从指定字符开始直到最后一个字符

如下命令:

1
STR=` ethtool eth0 | grep Speed | awk '{print $2}' `

执行之后,变量 STR 中保存的是字符串“1000Mb/s”(不含引号),现在我要删除“Mb/s”,只剩下“1000”,可以这样做:

1
echo ${STR%M*}

这表示从右边开始,删除第一个 M 及右边的字符。

(4)截取字段串,可以考虑用删除掉多余字符串的方法来实现,例如:
截取字符串
[192.168.3.11] 中的方括号里的IP地址, 用将方括号删除的方法,即可实现同样的效果:

1
2
3
A= "[192.168.3.11]"
B=` echo $A | sed 's/\ [//' | sed 's/]//' `
echo $B

输出即为:192.168.3.11
注意:上面的第2行代码中,\ 和 [ 之间特意多加了一个空格(其实不应该有空格的),是因为本站安装的LaTex插件的影响。

其中,两个sed命令分别将左括号[及右括号]替换为了空字符串,相当于删除了它们。左方括号在sed中需要转义,所以要以 \ 开头。

猜你喜欢

转载自huanyue.iteye.com/blog/1996767