分享

shell中的参数替换

 jiffes 2016-01-14
shell中的参数替换 2013-11-04 10:53:07

分类: 嵌入式

常用类型参数替换
        ${parameter}            与$parameter相同, 也就是变量parameter的值.
        在某些上下文中, ${parameter}很少会产生混淆.

        ${parameter-default}     如果变量parameter没被声明, 那么就使用默认值.
        ${parameter:-default}     如果变量parameter没被设置, 那么就使用默认值.
        ${parameter-default}和${parameter:-default}在绝大多数的情况下都是相同的.
        只有在parameter已经被声明, 但是被赋null值得时候, 这个额外的:才会产生不同
        的结果(即此时前者不会输出,后者可以输出).

        ${parameter=default}     如果变量parameter没声明, 那么就把它的值设为default.
        ${parameter:=default}     如果变量parameter没设置, 那么就把它的值设为default.
        这两种形式基本上是一样的. 只有在变量$parameter被声明并且被设置为null值的时候, :才会引
        起这两种形式的不同.(如上边所示)

        ${parameter+alt_value}     如果变量parameter被声明了, 那么就使用alt_value, 否则就使用
        null字符串.    
        ${parameter:+alt_value}    如果变量parameter被设置了, 那么就使用alt_value, 否则就使用
        null字符串.
        这两种形式绝大多数情况下都一样. 只有在parameter被声明并且设置为null值的时候, 多出来的
        这个:才会引起这两种形式的不同(即后者不会输出).

        ${parameter?err_msg}     如果parameter已经被声明, 那么就使用设置的值, 否则打印err_msg
        错误消息.    
        ${parameter:?err_msg}    如果parameter已经被设置, 那么就使用设置的值, 否则打印
        err_msg错误消息.
        这两种形式绝大多数情况都是一样的. 和上边所讲的情况一样, 只有在parameter被声明并设置为
        null值的时候, 多出来的:才会引起这两种形式的不同.

变量长度/子串删除
        ${#var}
        字符串长度(变量$var得字符个数). 对于array来说, ${#array}表示的是数组中第一个元素的长度.
        例外情况:
        ${#*}和${#@}表示位置参数的个数.
        对于数组来说, ${#array[*]}和${#array[@]}表示数组中元素的个数.

        ${var#Pattern}, ${var##Pattern}
        从变量$var的开头删除最短或最长匹配$Pattern的子串.

        ${var%Pattern}, ${var%%Pattern}
        从变量$var的结尾删除最短或最长匹配$Pattern的子串.

变量扩展/子串替换
        这些结构都是从ksh中引入的.
        ${var:pos}
        变量var从位置pos开始扩展(即pos之前的字符都丢弃).
        ${var:pos:len}
        变量var从位置pos开始, 并扩展len个字符.
        ${var/Pattern/Replacement}
        使用Replacement来替换变量var中第一个匹配Pattern的字符串.
        ${var//Pattern/Replacement}
        全局替换. 所有在变量var匹配Pattern的字符串, 都会被替换为Replacement.
        ${!varprefix*}, ${!varprefix@}
        匹配所有之前声明过的, 并且以varprefix开头的变量.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多