shell字符串截取,字符串最长最短匹配方程,变量初始值

   使用Shell完成各种Linux运维任务时,一旦涉及到判断、条件测试等相关操作时,往往需要对相关的命令输出进行过滤,提取出符合要求的字符串。

字符串截取的方式:

  • ${变量名:起始位置:长度}

1)截取前两个字符

[root@myhost conf]# a="abcd"
[root@myhost conf]# echo ${a:0:2}
ab

2)截取前两个字符

[root@myhost conf]# a="abcd"
[root@myhost conf]# echo ${a:0:2}
ab

 

子串替换的两种用法:

  • 只替换第一个匹配结果:${变量名/old/new}
  • 替换全部匹配结果:${变量名//old/new}

1)替换第一个字符

[root@myhost conf]# echo $a
abcdb
[root@myhost conf]# echo ${a/b/B}
aBcdb

2)替换全部字符

[root@myhost conf]# echo $a
abcdb
[root@myhost conf]# echo ${a//b/B}
aBcdb

 

字符串最短最长匹配:

  • 从左向右,最短匹配删除:${变量名#*关键词}
  • 从左向右,最长匹配删除:${变量名##*关键词}
  • 从右向左,最短匹配删除:${变量名%关键词*}
  • 从右向左,最长匹配删除:${变量名%%关键词*}

1)匹配第一个‘:’之后的内容

[root@myhost conf]# echo $a
root:x:0:0:root:/root:/bin/bash
[root@myhost conf]# echo ${a#*:}
x:0:0:root:/root:/bin/bash

2)匹配第一个‘:’之前的内容

[root@myhost conf]# echo $a
root:x:0:0:root:/root:/bin/bash
[root@myhost conf]# echo ${a%%:*}
root

3)匹配最后一个‘:’之后的内容

[root@myhost conf]# echo $a
root:x:0:0:root:/root:/bin/bash
[root@myhost conf]# echo ${a##*:}
/bin/bash

4)匹配最后一个‘:’之前的内容

[root@myhost conf]# echo $a
root:x:0:0:root:/root:/bin/bash
[root@myhost conf]# echo ${a%:*}
root:x:0:0:root:/root

5)将以.txt结尾的文件改为.doc

[root@svr5 ~]# mkdir rendir
[root@svr5 ~]# cd rendir
[root@svr5 rendir]# touch {a,b,c,d,e,f,g,h,i}.doc
[root@svr5 rendir]# ls
a.doc b.doc c.doc d.doc e.doc f.doc g.doc h.doc i.doc
[root@svr5 rendir]# vim renfile.sh
#!/bin/bash
for i in `ls *.doc` #注意这里有反引号
do
mv $i ${i%.*}.txt
done

变量初始值

变量的初始值格式如下 :

${var:-word}

“:-”是写死的,var代表变量,word代表初始值

1)创建用户,设置密码

 

[root@svr5 ~]# cat /root/test.sh
#!/bin/bash
read -p "请输入用户名:" user
[ -z $user ] && exit                           //如果无用户名,则脚本退出
read -p "请输入密码:" pass
pass=${pass:-123456}                    //如果用户没有输入密码,则默认密码为123456
useradd $user
echo "$pass" | passwd --stdin $user

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值