Shell变量中截取字符串

时间:2021-09-13 12:14:06   收藏:0   阅读:56

一、说明

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

 

二、字符串截取的方式:

 

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

 

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

 

  区别是替换全部使用连续的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代表初始值

 

测试创建用户,设置密码

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

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

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

echo "$user"
echo "$pass"

 

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

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!