shell 运算符

shell中的运算符可能一些人会感到很陌生,我们来了解一下吧

替换运算符

${varname:-word}

如果varname存在且非null,返回varname;否则返回word

用途:如果变量未定义,返回默认值

${varname:=word}

如果varname存在且非null,返回varname;否则设置它的值为word,并返回

用途:如果变量未定义,则设置默认值并返回

${varname:?word}

如果varname存在且非null,返回varname;否则显示varname=word,并且退出当前的命令或脚本

省略word会出现默认信息:parameter null or not set

用途:为了捕捉由于变量未定义而导致的错误

${varname:+word}

如果varname存在且非null,返回word;否则返回null

用途:为了测试变量的存在

以上这四个运算符内的冒号(:)都是可选的,如果忽略冒号,则将每个定义里面的“存在且非null”改为存在,也就是,仅用于测试变量是否存在

模式匹配运算符

${variable#pattern}

如果模式匹配于变量值的开头处,则删除匹配的最短部分,并返回剩下的部分

path=/home/tolstoy/mem/long.file.name

那么${path#/*/}=tolstoy/mem/long.file.name

${variable##pattern}

如果模式匹配于变量值的开头处,则删除匹配的最长部分,并返回剩下的部分

例如${path##/*/}=long.file.name

${variable%pattern}

如果模式匹配于变量值的结尾处,则删除匹配的最短部分,并返回剩下的部分

例如${path%.*}=/home/tolstoy/mem/long.file

${variable%%pattern}

如果模式匹配于变量值的结尾处,则删除匹配的最长部分,并返回剩下的部分

例如${path%.*}=/home/tolstoy/mem/long

字符串长度运算符

$ {#variable}

返回 $variable 值里的字符长度

 

posted @ 2015-11-28 15:38  2BiTT  阅读(404)  评论(0编辑  收藏  举报