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 值里的字符长度
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步