Linux学习

[Linux](七) --shell bash学习----变量内

2019-01-09  本文已影响13人  你就像只铁甲小宝

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

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不存在,所以可以替换掉。

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


后记:

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

上一篇 下一篇

猜你喜欢

热点阅读