shell笔记---变量扩展

来源:互联网 发布:java中多态的表现形式 编辑:程序博客网 时间:2024/05/28 22:12

在shell中要使用一个变量var,通常是采用表达式${var},其实在左括号‘{‘到右括号‘}’之间有一些特定的语法可以实现变量扩展功能。

取子字符串

语法: ${变量名:起点:长度}

var="hello world"echo ${var:0:5}结果:hello

当省略长度时,将得到从起点开始的子字符串

var="hello world"echo ${var:6}结果:world


字符串长度

语法:${#变量名}

var="hello world"echo ${#var}结果:11


替换字符

语法: ${变量/匹配样式/替换字符串}

var="hello world"echo ${var/hello/hi}结果:hi world

当替换字符串为空时,可以实现删除匹配的字符串

var="hello world"echo ${var/hello/}结果:world


根据状态返回值

shell可以根据变量的状态(未定义,空值,非空值)3种状态返回对应的值。

语法一:${变量-字符串}
当${变量}未定义时,使用字符串作为返回值

echo ${var-hello}结果:hello

语法二:${变量:-字符串}
当${变量}未定义或为空值时,使用字符串作为返回值

var=echo ${var:-hello}结果:hello

语法三:${变量+字符串}
当${变量}定义过,使用字符串作为返回值

var=echo ${var+hello}结果:hello

语法四:${变量:+字符串}
当${变量}为非空值时,使用字符串作为返回值

var=worldecho ${var:+hello}结果:hello
用途:假设${var}为某个命令cmd的非必需选项-l的参数cmd ${var:+-l} ${var}var=结果:cmdvar=test结果:cmd -l test

语法五:${变量=字符串}
${变量}未定义时,使用字符串作为返回值,同时赋值给${变量}

echo ${var=hello}echo ${var}结果:hello     hello

语法六:${变量:=字符串}
${变量}为未定义或为空值时,使用字符串作为返回值,同时赋值给${变量}

var=echo ${var:=hello}echo ${var}结果:hello     hello
0 0
原创粉丝点击