十 字符串处理

字符串截取

字符串截取            格式
使用${}表达式         ${var:起始位置:长度};编号从0开始,可省略
使用expr substr      expr substr "$var" 起始位置 长度;起始位置编号从1开始
使用cut工具        echo $var | cut -b 起始位置-结束位置;起始位置编号从1开始

字符串的匹配删除

     格式                         
${变量名#*关键词}      从左到右,最短匹配删除;#用来删除头部,*通配 
${变量名##*关键词}     从左到右,最长匹配删除;#用来删除头部,*通配    

${变量名%关键词*}      从右到左,最短匹配删除;%用来删除尾部,*通配    
${变量名%%关键词*}     从右到左,最长匹配删除;%用来删除尾部,*通配   

文件批量改名

例子:将扩展名.doc改为.txt


#!/bin/bash
for FILE in *.doc
do
  mv $FILE ${FILE%.doc}.txt
done

字符串的替换

    格式
${var/old/new}   只替换第一个匹配结果   
${var//old/new}  替换全部匹配结果    

变量初值处理

取值

取值,${var:-word}


若变量var已存在且非null,则返回$var的值
否则返回字串"word",变量var值不变
用途: 如果变量没定义 返回默认值

赋值

赋值,${var:=word}

若变量var已存在且非null,则返回$var的值
否则返回字串"word",并赋值给变量var
用途: 如果变量没定义 给变量赋值

有值时提示

有值时提示,${var:+"提示信息"}

若变量var已存在且非null,则给出提示
否则返回NUll(空值)
用途 : 测试变量是否定义

无值时提示

无值时提示,${var:"提示信息"}

若变量var已存在且非null,则返回$var的值
否则给出提示信息(若省略,则用默认提示)
用途: 捕捉由于变量未定义所导致的错误

练习:

a、提示输入一个正整数x,求从1x的和

b、若用户未输入值(直接回车),则赋值x=1

#!/bin/bash
read -p "请输入一个正整数:" x
x=${x:-1};i=1;SUM=0
while [ $i -le $x ]
do
  let SUM+=i;let i++
done
echo "从1到$x的总和是:$SUM"

例题:

mycluster.sh

检查集群中主机的物理连接状态,要求如下

能够设置检查主机的台数 和 检查哪些主机

把不在线主机的ip地址和时间保存到/clusterdir目录下的stat.txt文件里并把不在线主机的ip地址 时间 台数 输出到屏幕上

猜你喜欢

转载自www.cnblogs.com/zhongguiyao/p/8984881.html