Linux学习笔记(脚本变量)

操作系统 CentOs 6.5, 用户root

前两天看鸟哥的Linux私房菜,到shell脚本这一块儿,发现以前的基础真心没打好,就标了个书签,想写个blog记下来,然后就没然后了,忘了。
今天继续看的时候,看到linux启动流程,然后vi /etc/profile,其他的shell语句都能看懂,忽然发现了一个语句 if [ “{-#*i}" != "-” ],顿时就懵了,啥意思? -#*i是个变量?就去网上查了,在贴吧里看到有人提了一句:shell 脚本变量替换,突然就想起来上面要写的blog,内容就是这一方面的,到今天看见就忘了,无语,赶快记下来。
主题:变量内容的删除、取代和替换
变量除了可以直接设定来修改原本的内容外,也可以对其进行微调来获取想要的结果

  1. 删除与取代
    echo $PATH,结果:
    /usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin
    如果想把PATH里的第一个路径/usr/local/sbin:去掉,可以执行{PATH#/usr/local/sbin:},返回的结果  
    /usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin  
    然后就引申出来了这样的语法
    {PATH#/*/sbin:},和上面一样的结果.
    但是如果你想{PATH#/usr/local/bin:}把PATH中间的子串/usr/local/bin去掉却不能执行,会报错,而{PATH#/*/local/bin:}可以执行,但是结果却是连同子串左面的内容也删除了。
    {var#/*/bin:}这样的语法,代表从变量var内容的最前面开始向右删除,仅删除最短的那一个,即{PATH#/*/sbin:},只从PATH变量中删除/usr/local/sbin:,
    然后又有一个{var##/*/bin:}这样的语法,代表从前面开始向右删除,删除最长的一个,即{PATH##/*/sbin:},结果是/usr/local/bin:/usr/bin:/bin:/root/bin
    既然有从左往右的,也就有从右往左的,删除最短的和最长的语法分别是把#和##换成%和%%,再具休的讲解,可以百度一下这方面的教程,应该很多,这个blog只是做为我一个备忘,就不再深入的说的。

    取代:
    // {变量//旧字符串/新字符串},若变量内容符合旧字符串,则全部旧字符串会被新字符串取代
    2.变量的测试
    变量设定方式 str没有设置 str为空字符串 str已设置非空
    var=${str-expr} var=expr var= var=$str
    var=${str:-expr} var=expr var=expr var=$str
    var=${str+expr} var= var=expr var=expr
    var=${str:+expr} var= var= var=expr
    var=${str?expr} expr输出至stderr var= var=$str
    var=${str:?expr} expr输出至stderr expr输出至stderr var=$str

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值