shell脚本基础二
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本基础二相关的知识,希望对你有一定的参考价值。
字符串的处理
1.字符串的截取
方法一,使用 ${}表达式
格式:${var:起始位置:长度}
Phone="13788768897"
# echo ${#Phone}
11
使用${}方式截取字符串时,起始位置是从0开始的(和数组下标编号类似)
echo ${Phone:1:6}
378876
方法二,使用 expr substr
格式:expr substr "$var" 起始位置 长度
使用expr substr截取字符串时,起始编号从1开始,这个要注意与${}相区分。
expr substr "$Phone" 1 6
137887
方式三,使用cut分割工具
格式:echo $var | cut -b 起始位置-结束位置
选项 -b 表示按字节截取字符,其中起始位置、结束位置都可以省略。当省略起始位置时,视为从第1个字符开始(编号也是从1开始,与expr类似),当省略结束位置时,视为截取到最后。
echo $Phone | cut -b 1-6
137887
# echo $phone | cut -b 2,4,6,8 不连续截取
7679
2.字符串的替换
只替换第1个子串
格式:${var/old/new}
SCHOOL="Tarena IT Group"
# echo ${SCHOOL/r/RRRR}
TaRRRRena IT Group
替换全部子串
格式:${var//old/new}
echo ${SCHOOL//r/RRRR}
TaRRRRena IT GRRRRoup
3.字符串的匹配删除
1)从左向右,最短匹配删除
格式:${变量名#*关键词}
删除从左侧第1个字符到最近的关键词“oo”的部分,* 作通配符理解:
echo $MAIL //确认变量 MAIL的值
/var/spool/mail/root
echo ${MAIL#*/}
var/spool/mail/root
2)从左向右,最长匹配删除
格式:${变量名##*关键词}
删除从左侧第1个字符到最远的关键词“oo”的部分:
echo ${MAIL##*oo}
t
# echo ${MAIL##*/}
root
3)从右向左,最短匹配删除
格式:${变量名%关键词*}
删除从右侧最后1个字符到往左最近的关键词“oo”的部分,* 做通配符理解
echo ${MAIL%oo*}
/var/spool/mail/r
# echo ${MAIL%/*}
/var/spool/mail
4)从右向左,最长匹配删除
格式:${变量名%%关键词*}
删除从右侧最后1个字符到往左最远的关键词“oo”的部分:
echo ${MAIL%%oo*}
var/sp
4.字符串初值的处理
只取值,${var:-word}
若变量var已存在且非Null,则返回 $var 的值;否则返回字串“word”,原变量var的值不受影响
变量值已存在的情况
[[email protected] ~]# echo $SCHOOL //查看原变量值
Tarena IT Group.
[[email protected] ~]# echo ${SCHOOL:-Tarena} //因SCHOOL已存在,输出变量SCHOOL的值
Tarena IT Group.
[[email protected] ~]# echo $SCHOOL //原变量的值并不改变
Tarena IT Group.
变量值不存在的情况:
[[email protected] ~]# unset SCHOOL //清除SCHOOL变量
[[email protected] ~]# echo ${SCHOOL:-Tarena} //因SCHOOL已不存在,输出“Tarena”
Tarena
[[email protected] ~]# echo $SCHOOL //变量SCHOOL仍然不存在
以上是关于shell脚本基础二的主要内容,如果未能解决你的问题,请参考以下文章