热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Linux操作系统中对Bash变量内容的修改

文章标题:Linux操作系统中对Bash变量内容的修改。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

    我们知道两种对变量取胜的方法:

    echo $HOME echo ${HOME}

    在echo ${variable}的方法中,还可以对变量的内容进行修改,只要加上一些字符标志,后面再接着使用比对字符串,就可以修改变量的内容了。假设变量名为:vbird ,并且内容为/home/vbird/testing/testing.x.sh

    ◆1 、完整呈现vbird 这个变量:

    vbird="/home/vbird/testing/testing.x.sh"

    echo ${vbird}

    /home/vbird/testing/testing.x.sh

    ◆2 、在vbird 变量中,从最前面开始比对

    若开头为 /,则删除两个/ 之间的所有数据,即 /*/

    echo ${vbird##/*/}

    testing.x.sh——删除了/home/vbird/testing/

    echo ${vbird#/*/}

    vbird/testing/testing.x.sh——只删除了/home/而已

    ------在这两个例子中,变量名后面如果接了两个##,表示在##后面的字符串取“最长的”那一段;如果只有一个#,表示取“最小的”那一段。(自注:“最小的那一段“表示从左到右离第一个字符最近并且和第一个字符相同的字符之间的内容,最长则反之)

    ◆3 、承上题,如果是从后面开始,删除/*呢?

    echo ${vbird%%/*/}

    /home/vbird/testing/testing.x.sh——都没有删除

    echo ${vbird%%/*}

    --------都被删除了

    echo ${vbird%/*}

    /home/vbird/testing ——只删除 /testing.x.sh部分

    在这个例子中要特别注意,那个% 比对的是“最后面那个字符”的意思,所以第一个当然不对,因为vbird 这个变量的内容最后面是h 而不是/.至于%%/*则是删除“最长的那个/*”,当然就是全部,而%/* 则是最短的那个。(自注:最短最长同上注,虽然% 表示反向的比对,但需注意的是在${variable} 中输入的时候仍然按着从左到右的顺序,即与变量内容中的字符的顺序相同。如下例:

    echo ${vbird%t*h}

    /home/vbird/testing/tes ——t.ing.x.sh被删除了

    如果是

    echo ${vbird%h*t}

    /home/vbird/testing/testing.x.sh——则输出没有变化(因为比对都是与第一个字符比,变量内容的第一个字符为h ,而命令中给出的第一个字符为t ,与真实的变量内容不符。)

    ◆4.将vbird 变量中的testing 取代为TEST

    echo ${vbird/testing/TEST}

    /home/vbird/TEST/testing.x.sh

    echo ${vbird//testing/TEST}

    /home/vbird/TEST/TEST.x.sh

    如果变量后面接的是/ 时,表示后面是进行" 取代" 的工作,而且仅取代“第一个”,如果是//,则表示全部的字符串都取代。


推荐阅读
author-avatar
l87653644
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有