美文网首页Linux学习
[Linux](七) --shell bash学习----变量内

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

作者: 你就像只铁甲小宝 | 来源:发表于2019-01-09 21: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不存在,所以可以替换掉。

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


    后记:

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

    相关文章

      网友评论

        本文标题:[Linux](七) --shell bash学习----变量内

        本文链接:https://www.haomeiwen.com/subject/zrlnrqtx.html