分享

打印 上一主题 下一主题 Linux 变量替换与扩展

 raymoon_sure 2015-10-15
如果对你有帮助的话,请顶一下,谢谢
一、变量替换
${varname:-word}    如果变量varname存在且非null,则返回其值,否则,返回word
${varname-word}     如果变量varname存在,则返回其值,否则,返回word

${varname:+word}    如果变量varname存在且非null,则返回word,否则,返回null
${varname+word}     如果变量varname存在,则返回word,否则,返回null

${varname:=word}   如果变量varname存在且非null,则返回其值,否则,设置它为word,并返回word
${varname=word}     如果变量varname存在,则返回其值,否则,设置它为word,并返回word

${varname:?word}   如果变量varname存在且非null,则返回其值,否则,显示varname:word,并退出当前的命令或脚本,省略word会出现默认的信息parameter null or not set。
${varname?word}     如果变量varname存在,则返回其值,否则,显示varname:word,并退出当前的命令或脚本,省略word会出现默认的信息parameter null or not set。


二、模式匹配运算
(注意:这里用的模式都是通配字符模式,而非正则表达式)
假设变量 path=/home/tolstoy/mem/long.file.name

${variable#pattern}      如果模式匹配于变量的开头处,则删除匹配的最短部分,并且返回剩下的部分
例如:${path#/*/}        结果: tolstoy/mem/long.file.name

${variable##parttern}  如果模式匹配于变量的开头处,则删除匹配的最长部分,并且返回剩下的部分
例如{path##/*/}        结果: long.file.name

${variable%parttern}    如果模式匹配于变量的结尾处,则删除匹配的最短部分,并且返回剩下的部分
例如{path%.*}           结果: /home/tolstoy/mem/long.file

${variable%%parttern} 如果模式匹配于变量的结尾处,则删除匹配的最长部分,并且返回剩下的部分
例如{path%%.*}        结果: /home/tolstoy/mem/long

三、特殊情况
${#var}  表示字符串长度
$#  ${#*} ${#@} 表示位置参数的个
对于数组来说,${#array_name} 表示的是数组中第一个元素的长度
对于数组来说,${#array_name
  • }和${#array_name[@]}表示数组中元素的个数

    四、参数扩展与模式匹配
    参数形式        扩展后
    x{y,z}        xy xz
    ${x}{y, z}        ${x}y ${x}z
    ${x}{y, $z}        ${x}y ${x}${z}
    ${param#pattern}        从param前面最小删除pattern的匹配
    ${param##pattern}        从param前面最大删除pattern的匹配
    ${param%pattern}        从param后面最小删除pattern的匹配
    ${param%%pattern}        从param后面最大删除pattern的匹配
    ${param/pattern/string}        从param中用string替换pattern的第一次匹配,string可为空
    ${param//pattern/string}        从param中用string替换pattern的所有匹配,string可为空
    ${param:3:2}        截取$param中索引3开始的2个字符
    ${param:3}        截取$param中索引3至末尾的字符
    ${@:3:2}        截取参数列表$@中第3个开始的2个参数
    ${param:-word}        若$param为空或为设置,则参数式返回word,$param不变
    ${param:+word}        若$param为非空,则参数式返回word,$param不变
    ${param:=word}        若$param为空或为设置,则参数式返回word,同时$param设置为word
    ${param:?message}        若$param为空或为设置,则输出错误信息message,若包含空白符,则需引号





    PHP,PHP开发网,PHP基础开发,PHP新手入门,叶子树是一个专业的PHP框架详解,PHP基础编程,PHP核心技术编程,PHP优化与安全,覆盖绝大部分PHP知识点的论坛,欢迎广大的PHP好爱者光临!-叶子树


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

      0条评论

      发表

      请遵守用户 评论公约

      类似文章 更多