您的位置:首页 > 运维架构 > Shell

shell参数扩展

2017-03-14 22:10 148 查看
${parameter:-word}

  如果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参数