首页 > 系统服务 > 详细

Shell变量中截取字符串

时间:2021-09-13 12:14:06      阅读:53      评论:0      收藏:0      [点我收藏+]

一、说明

本文讲解在变量中处理字符串的部分语句,格式化变量值的输出

 

二、字符串截取的方式:

 

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

1)仅截取前两个字符,其他字符删除

[root@server ~]# a="abcde"

[root@server ~]# echo ${a:0:2}

ab

其中“0”代表从哪个字符标识位截取,“2”代表截取的字符串个数

第一个字符标识位为0,后续为1、2、3、4

 

2)从第2个字符开始,截取3个字符

[root@server ~]# a="abcde"

[root@server ~]# echo ${a:1:3}

bcd

 

三、字符串替换的两种用法

 

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

  区别是替换全部使用连续的2个“/”

1)替换第一个字符 

[root@server ~]# echo $a

abcdec

[root@server ~]# echo ${a/c/3}

ab3dec

 

2)替换全部字符

[root@server ~]# echo $a

abcdec

[root@server ~]# echo ${a//c/3}

ab3de3

 

四、字符串最短和最长匹配

 

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

  -即遇到第一个关键词进行匹配,删除自关键词往左字符串

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

  -即遇到最后一个关键词进行匹配,删除自关键词往左字符串

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

  -即遇到第一个关键词进行匹配,删除自关键词往右的字符串

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

  -即遇到最后一个关键词进行匹配,删除自关键词往右的字符串

 

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

[root@server ~]# echo $a

root:x:0:0:root:/root:/bin/bash

[root@server ~]# echo ${a#*:}

x:0:0:root:/root:/bin/bash

 

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

[root@server ~]# echo $a

root:x:0:0:root:/root:/bin/bash

[root@server ~]# echo ${a##*:}

/bin/bash

 

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

[root@server ~]# echo $a

root:x:0:0:root:/root:/bin/bash

[root@server ~]# echo ${a%:*}

root:x:0:0:root:/root

 

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

[root@server ~]# echo $a

root:x:0:0:root:/root:/bin/bash

[root@server ~]# echo ${a%%:*}

root

 

五、变量的初始值(缺省值)

 

  • ${var:-word}

 

  “:-”是固定写法,var代表变量,word代表初始值

 

测试创建用户,设置密码

[root@server ~]# cat test.sh
#!/bin/bash

read -p "请输入账号:" user
[ -z $user ] && exit
##如果没有输入用户名,则脚本自动退出

read -p "请输入密码:" pass
pass=${pass:-abcdef}
##如果没有输入密码,则缺省密码为abcdef

echo "$user"
echo "$pass"

 

Shell变量中截取字符串

原文:https://www.cnblogs.com/itbox/p/15259593.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!