Linux中%.*和%%.*的作用

发布时间 2024-01-01 04:19:14作者: niuyx

1. 举例%.*的用法

[root@centos7 ~]# str=aa.bb.cc.dd
[root@centos7 ~]# echo $str
aa.bb.cc.dd
[root@centos7 ~]# echo ${str%%.*}
aa.bb.cc

%.* 是以 . 为分隔符,删除变量最后一个 . 及其后的字段

2. 举例%%.*的用法

[root@centos7 ~]# str=aa.bb.cc.dd
[root@centos7 ~]# echo $str
aa.bb.cc.dd
[root@centos7 ~]# echo ${str%%.*}
aa

%%.* 是以 . 为分隔符,删除变量第一个 . 及其后的字段

3. 更改分隔符的用法

作为分隔符

[root@centos7 ~]# str=aa:bb:cc:dd
[root@centos7 ~]# echo $str
aa:bb:cc:dd
[root@centos7 ~]# echo ${str%:*}
aa:bb:cc
[root@centos7 ~]# echo ${str%%:*}
aa

# 作为分隔符

[root@centos7 ~]# str=aa#bb#cc#dd
[root@centos7 ~]# echo $str      
aa#bb#cc#dd
[root@centos7 ~]# echo ${str%#*} 
aa#bb#cc
[root@centos7 ~]# echo ${str%%#*}
aa

4. 脚本变量的用法

[root@centos7 ~]# ip=`hostname -I |awk '{print $1}'`
[root@centos7 ~]# echo $ip
10.100.1.121
[root@centos7 ~]# echo ${ip%.*}
10.100.1
[root@centos7 ~]# echo ${ip%.*}.
10.100.1.
[root@centos7 ~]# echo ${ip%%.*}
10

编写一个脚本,检测在线IP和离线IP

#!/bin/bash

IP=`hostname -I |awk '{print $1}'`
NET=${IP%.*}.

for i in {120..130}
do
    ping -c 1 $NET$i >/dev/null && echo "$NET$i up" || echo "$NET$i down"  
done

执行结果

[root@centos7 ~]# bash a.sh 
10.100.1.120 down
10.100.1.121 up
10.100.1.122 up
10.100.1.123 up
10.100.1.124 down
10.100.1.125 down
10.100.1.126 down
10.100.1.127 down
10.100.1.128 down
10.100.1.129 down
10.100.1.130 down