[Linux](七) --shell bash学习----变量内容的删除、替代与替换

今天来学习下,变量内容的删除、替换与替代。一开始没看懂,现在理解了,结合实践总结一下,怕下次忘了。

1.我们用path变量来学习和实践

如图:
在这里插入图片描述

2.变量内容的删除,#,%的学习

删除有两种形式:
1.从左向右删除,用的是符号#。
2.从右到向左删除,用的是符号%。
先学习#的使用

若我想删除,如下部分:
在这里插入图片描述
使用:echo ${path#/*/bin:}
在这里插入图片描述
解释:
#号代表删除的意思。
* 号可以匹配0到无穷多个字符,这里匹配的是usr/local/sbin:/usr/local/bin
整个/*/bin: == /usr/local/sbin:/usr/local/bin:

在举个例子:
echo ${path#/*:}
在这里插入图片描述

这里从左到右匹配的是/usr/local/sbin:,然后就把它给删除了。
那若想保留的只剩下最后一个目录 /bin:

echo ${path##/*:}
在这里插入图片描述
会发现这里使用了##号,有什么不同呢?

其实 /*:可以匹配成/usr/local/sbin: 但其实也可以匹配成
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
只是下面这个长,上面那个比较短。##号会匹配最长的那个,所以最终结果只剩下/bin了。
学习%的使用

%号可以从右到左删除。
echo ${path%:/bin}
例子:
在这里插入图片描述%%也代表匹配符合的最长的那个。
例子
在这里插入图片描述
从右到左匹配,:/* 匹配的是:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin


3.变量内容的替换,格式${变量/oldvar/new/var}

我们将usr第一个替换成大写的USR。
echo ${path/usr/USR}
在这里插入图片描述
我们将usr全部替换成大写的USR。
echo ${path//usr/USR}在这里插入图片描述

对比下可以看到,用了两个//号后,就可以把所有符合的字符全部替换掉。


4.变量的替代,使用符号-

变量的替代可以用来判断变量是否存在。

echo ${path-root}
在这里插入图片描述

-号的意思是,若变量path不存在,则用字符root替代掉,但若path存在,则不替代。
因为我们的path存在,所以没有替代掉。

我们来试试不存在的变量,如图:
在这里插入图片描述

变量test不存在,所以可以替换掉。
提醒:-号的替代并不会改变原来变量的值,想要把旧的变量内容一起替代的话,可以使用=号。

后记:

下次有时间可以做点练习巩固下,感觉这些还是要多练记得牢固。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值