shell特殊变量(3)

  1. 变量子串

在这里插入图片描述

  1. ${#parameter}
#基础用法 
[root@manager ~]# oldboy=oldbing 
[root@manager ~]# echo ${oldboy}
oldbing
[root@manager ~]# echo ${#oldboy} 
7
#企业面试题 ##4.3-1面试题: I am oldboy linux,welcome to our training. 显示这串字符中 单词字符数大于6的单词 
##分析: 
###1.通过for循环 取出每个单词
###2.判断 字符数 > 6 ? 
###1)大于6显示 
###2)不大于 继续 读取下1个单词
[root@manager ~]# vim  /server/scripts/2.5-3-word.sh 
#!/bin/bash 
#author oldboy  
str="I am oldboy linux,welcome to our training. "
for n in  $str 
do   
     if [ ${#n} -gt  6 ]   #great  than    
      then        
          echo ${#n} $n    
     fi 
 done
 
 
 [root@manager ~]# vim  /server/scripts/2.5-3-word.sh 
 #!/bin/bash 
 #author oldboy 
str="I am oldboy linux,welcome to our training. "
for n in  $str
 do    
         if [ ${#n} -gt  6 ]   #great  than   
         then        
               echo ${#n} $n    
         fi 
 done




[root@manager ~]# echo I am oldboy linux,welcome to our training. I am oldboy linux,welcome to our training.
 [root@manager ~]# 
 [root@manager ~]# echo I am oldboy linux,welcome to our training.| 
 > awk -vRS="[ ,.]" 'length()>6'
 >  welcome 
 >  training

2)变量截取

[root@manager ~]# oldboy=oldboyedu.com 
[root@manager ~]# #echo ${oldboy:起始点:一共取多少个字符} [root@manager ~]# 
[root@manager ~]# echo ${oldboy:4:3} 
oye
 #截取功能字符是从0开始 
 [root@manager ~]# echo ${oldboy:3:3} 
 boy 
 [root@manager ~]# echo ${oldboy:3}
  boyedu.com

3)删除
在这里插入图片描述

#简单使用
 [root@manager ~]# test='I am oldboy teacher' 
 [root@manager ~]# echo  ${test#I} 
 am oldboy teacher 
 [root@manager ~]# echo  ${test#o}
  I am oldboy teacher 
  [root@manager ~]# echo  ${test#I am o} 
  ldboy teacher 
  [root@manager ~]# echo  ${test#*o} 
  ldboy teacher 
  [root@manager ~]# echo  ${test##*o} 
  y teacher
[root@manager ~]# test='I am oldboy teacher' 
[root@manager ~]# 
[root@manager ~]# 
[root@manager ~]# echo ${test%r} 
I am oldboy teache 
[root@manager ~]# echo ${test%er} 
I am oldboy teach 
[root@manager ~]# echo ${test%o*} 
I am oldb 
[root@manager ~]# echo ${test%%o*} 
I am 
#应用 
##简单 sed 比较麻烦 使用 变量子串里面删除功能 
[root@manager ~]# net='/etc/sysconfig/networkscripts/ifcfg-eth0' [root@manager ~]# 
[root@manager ~]# echo ${net##*/} 
ifcfg-eth0 
[root@manager ~]# echo ${net%%/*}
[root@manager ~]# echo ${net%/*} 
/etc/sysconfig/network-scripts 
[root@manager ~]# 
[root@manager ~]# dirname  /etc/sysconfig/networkscripts/ifcfg-eth0 
/etc/sysconfig/network-scripts
 [root@manager ~]# basename  /etc/sysconfig/networkscripts/ifcfg-eth0 
 ifcfg-eth0
#使用linux命令  效率 比 变量子串 低 
root@manager ~]# time   for n  in  {1..10000} ;do echo ${#n} &>/dev/null ; done 
real    0m0.154s 
user    0m0.097s
sys 0m0.056s 
[root@manager ~]# time   for n  in  {1..10000} ;do echo ${n}|wc -L &>/dev/null ; done 
real    0m20.
292s user    0m8.
485s sys 0m11.692s
  • 小结:
  • 变量子串删除部分 主要用来在脚本中删除路径 里面的名字 或路径部分

4) 替换
在这里插入图片描述

[root@manager ~]# export LANG=C 
[root@manager ~]# 
[root@manager ~]# test='I am oldboy teacher'
 [root@manager ~]# echo ${test/[a-z]/oldboy}
  I oldboym oldboy teacher 
  [root@manager ~]# echo ${test//[a-z]/oldboy}
   I oldboyoldboy oldboyoldboyoldboyoldboyoldboyoldboy oldboyoldboyoldboyoldboyoldboyoldboyoldboy 
   [root@manager ~]#
    [root@manager ~]# test='I am oldboy teacher' 
    [root@manager ~]# echo ${test//oldboy/}
     I am teacher 
     [root@manager ~]# echo ${test/oldboy/} #把oldboy替换为空 即删除 
     I am teacher

5) 变量子串小结
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了58 篇原创文章 · 获赞 52 · 访问量 1237

猜你喜欢

转载自blog.csdn.net/ljaixiaoxue/article/details/104008957