shell参数扩展
2017-03-14 22:10
148 查看
${parameter:-word}
如果parameter没有设置或者为null,则整个参数扩展(这里为 ${parameter:-word})被赋予word的值,但是word值不会赋给parameter。
${parameter:=word}——取代默认值
如果parameter 不存在,则word的值会赋给整个扩展(${parameter:=word})并赋值给parameter。注意这里和-word的却别
${parameter:?word}
如果parameter为Null或者没有定义,则显示错误信息——word被写入被写入标准错误
${parameter:+word}
使用备用值。如果parameter为null或未设置,则不进行替换;否则word值会赋给整个参数扩展(这里为${parameter:+word}),同时word的值也会赋给parameter
${parameter:offset}
结果为offset偏移之后的字符(不包含offset位)。如offset为1,则第一个输出为除去第一个字符之后的所有字符。注意:字符从1开始编号
${parameter:offset:length}
输出为offset偏移之后的length个字符。
${#parameter}
输出parameter 字符的长度
{parameter#word} 和{parameter##word}
都是移除匹配的前缀模式
{parameter%word} 和{parameter%%word}
移除匹配的后缀模式
${parameter/pattern/string}
如果在parameter字符中,如果pattern能与其中的字符匹配,则匹配的这些字符用string代替。但是只会代替最先匹配到的字符(匹配顺序是从左往右匹配)
如果parameter没有设置或者为null,则整个参数扩展(这里为 ${parameter:-word})被赋予word的值,但是word值不会赋给parameter。
[root@logan ~]# var="" [root@logan ~]# echo ${var:-"word"} word [root@logan ~]# echo ${var:-"word"} word [root@logan ~]# echo $var [root@logan ~]#
${parameter:=word}——取代默认值
如果parameter 不存在,则word的值会赋给整个扩展(${parameter:=word})并赋值给parameter。注意这里和-word的却别
[root@logan ~]# var="" [root@logan ~]# echo ${var} [root@logan ~]# echo ${var:="hello"} hello [root@logan ~]# echo ${var} hello
${parameter:?word}
如果parameter为Null或者没有定义,则显示错误信息——word被写入被写入标准错误
[root@logan ~]# echo $var hello [root@logan ~]# echo ${var:?'error'} hello [root@logan ~]# var="" [root@logan ~]# echo ${var:?'error'} -bash: var: error
${parameter:+word}
使用备用值。如果parameter为null或未设置,则不进行替换;否则word值会赋给整个参数扩展(这里为${parameter:+word}),同时word的值也会赋给parameter
[root@logan ~]# echo $var [root@logan ~]# echo ${var:+'error'} [root@logan ~]# var="hello" [root@logan ~]# echo ${var:+'error'} error
${parameter:offset}
结果为offset偏移之后的字符(不包含offset位)。如offset为1,则第一个输出为除去第一个字符之后的所有字符。注意:字符从1开始编号
[root@logan ~]# echo $var 123456789 [root@logan ~]# echo ${var:1} 23456789 [root@logan ~]# echo ${var:2} 3456789 [root@logan ~]# echo ${var:8} 9
${parameter:offset:length}
输出为offset偏移之后的length个字符。
[root@logan ~]# echo $var 123456789 [root@logan ~]# echo ${var:1:5} 23456 [root@logan ~]# echo ${var:3:6} 456789 # length超出范围则用取长度 [root@logan ~]# echo ${var:3:7} 456789
${#parameter}
输出parameter 字符的长度
{parameter#word} 和{parameter##word}
都是移除匹配的前缀模式
[root@logan ~]# echo ${var} 123456789 [root@logan ~]# echo ${var#'123'} 456789 [root@logan ~]# echo ${var#'456'} 123456789
{parameter%word} 和{parameter%%word}
移除匹配的后缀模式
[root@logan ~]# echo $var 123456789 [root@logan ~]# echo ${var%"9"} 12345678 [root@logan ~]# echo ${var%"789"} 123456
${parameter/pattern/string}
如果在parameter字符中,如果pattern能与其中的字符匹配,则匹配的这些字符用string代替。但是只会代替最先匹配到的字符(匹配顺序是从左往右匹配)
[root@logan ~]# var="123456789" [root@logan ~]# echo ${var/"1"/"test"} test23456789 [root@logan ~]# echo ${var/"1"/"test"} test23456789 [root@logan ~]# var="123123456789789" [root@logan ~]# echo ${var/"1"/"test"} test23123456789789 # 这列可以看出匹配顺序 [root@logan ~]# echo ${var/"789"/"test"} 123123456test789
相关文章推荐
- shell中的参数扩展, 特殊变量
- shell [ 命令的执行 算术扩展 / 参数扩展 / 参数处理 初步用法]
- VB实现SHELL扩展之接口参数获取失败探析
- VB实现SHELL扩展之接口参数获取失败探析
- shell中的参数扩展, 特殊变量
- shell参数扩展
- shell参数扩展
- Shell 中的命令替换及参数扩展 | Linux 中国
- shell中的参数扩展, 特殊变量
- shell参数扩展
- [2012-04-25]shell大括号参数扩展(Parameter Expansion)
- VB实现SHELL扩展之接口参数获取失败探析
- VB实现SHELL扩展之接口参数获取失败探析
- Shell 大括号参数扩展及各类括号在 Shell 编程中的应用
- Shell 中的命令替换及参数扩展
- shell参数扩展
- shell当中的参数扩展
- shell中的参数扩展--详解
- shell参数扩展${}
- unix/linux 中的SHELL 参数多于9个的处理方法