红联Linux门户
Linux帮助

/etc/init.d/functions 文件的解析

发布时间:2012-11-22 22:06:18来源:红联作者:herrick_liang
redhat linux中的配置文件/etc/init.d/functions 中有一段代码:while [ "$1" != "${1##[-+]}" ]; do 是什么意思?
文章评论

共有 2 条评论

  1. qxfsy 于 2014-03-04 17:13:52发表:

    高!

  2. 于 2014-03-04 09:47:35发表:

    ${var%pattern},${var%%pattern},${var#pattern},${var##pattern} 这四种结构的意义是:${var%pattern}和${var%%pattern}表示从最右边(即结尾)匹配的,${var#pattern} 和${var##pattern}从最左边(即开头)匹配的。其中${var%pattern}和${var#pattern}是最短匹 配,${var%%pattern}和
    ${var##pattern}是最长匹配。只有在pattern中使用了通配符才能有最长最短的匹配,否则没有最 长最短匹配

    while [ "$1" != "${1##[-+]}" ]; do

    $1 != ${1##[-+]} >>表示从左边最长匹配以【-+】为行首开始匹配
    如 a=--+-2233
    ${a##[-+]} 值应该就为 -2233
    而${a##-} 值 -+-2233

    ${a##2} 值 --+-2233
    全句的意思为
    $1 的值 不等于 以减号或者加号 开始的行 为真,就执行do里面的语句
    QQ857770355