-
功能介绍
字符串取值是字符串变量的读取。针对字符串变量未声明或者为空的特殊返回值。
-
语法格式
:空测试 - 负向测试 + 正向测试 = 赋值 ?有问题,错误
序号 | 格式 | 说明 |
---|---|---|
1 | ${var} $var | var的取值 |
2 | ${var-string} | 如果var没有被声明, 那么就以string作为其值(var不被赋值) |
3 | ${var:-string} | 如果var没有被声明或其值为空,那么就以string作为其值(var不被赋值) |
4 | ${var+string} | 如果var没有被声明, 则返回空,反之则返回string |
5 | ${var:+string} | 如果var没有被声明或其值为空, 则返回空,反之则返回string |
6 | ${var=string} | 如果var没有被声明, 那么就以string赋值给var |
7 | ${var:=string} | 如果var没有被声明或其值为空, 那么就以string赋值给var |
8 | ${var?string} | 如果var没有被声明, 那么以string作提示并终止脚本 |
9 | ${var:?string} | 如果var没有被声明或其值为空, 那么以string作提示并终止脚本 |
10 | ${#var} | 字符串var的长度 |
11 | ${!xxx*}或${!xxx@} | 查找出已经定义的以xxx开头的变量 |
-
实例
1.${var}和$var
var的取值
renhl@verygood:~/usb$ var="ABC"; echo $var #获取var值
ABC
renhl@verygood:~/usb$ var="ABC"; echo ${var} #获取var值
ABC
renhl@verygood:~/usb$ var="ABC"; echo $var_ #获取var值,名字和其他连接 不能被识别
renhl@verygood:~/usb$ var="ABC"; echo ${var}_ #获取var值,名字和其他连接 有}能被识别
ABC_
renhl@verygood:~/usb$
2.${var-string}
如果var没有被声明, 返回string值(var不被赋值);var被声明,返回声明的值 。
renhl@verygood:~/usb$ unset var #删除var的声明
renhl@verygood:~/usb$ echo ${var-"123"} #没被声明,返回123
123
renhl@verygood:~/usb$ echo ${var} # var 没有被赋值
renhl@verygood:~/usb$ var="ABC";echo ${var-"123"} #var的声明,返回var的值
ABC
renhl@verygood:~/usb$ var=; echo ${var-"123"} #var的声明空,返回var的空值
renhl@verygood:~/usb$
3.${var:-string}
如果var没有被声明或其值为空,返回string值(var不被赋值) ;var被声明,返回声明的值 。
renhl@verygood:~/usb$ unset var #删除var声明
renhl@verygood:~/usb$ echo ${var:-"123"} #没有被声明,返回123
123
renhl@verygood:~/usb$ echo ${var} #var不会被赋值
renhl@verygood:~/usb$ var=; echo ${var:-"123"} #声明为空,返回123
123
renhl@verygood:~/usb$ echo ${var} #var不会被123赋值
renhl@verygood:~/usb$ var="ABC"; echo ${var:-"123"} #声明为非空,返回声明的值
ABC
renhl@verygood:~/usb$
4.${var+string}
如果var没有被声明, 则返回空,反之则返回string(var不被赋值)
renhl@verygood:~/usb$ unset var #删除var声明
renhl@verygood:~/usb$ echo ${var+"123"} #没有声明,返回空
renhl@verygood:~/usb$ var=; echo ${var+"123"} #声明为空,返回123
123
renhl@verygood:~/usb$ echo $var #不被123赋值
renhl@verygood:~/usb$ var="ABC"; echo ${var+"123"} #声明为非空,返回123
123
renhl@verygood:~/usb$ echo $var #不被123赋值
ABC
renhl@verygood:~/usb$
5.${var:+string}
如果var没有被声明或其值为空, 则返回空,反之则返回string(var不被赋值)
renhl@verygood:~/usb$ unset var #删除var的声明
renhl@verygood:~/usb$ echo ${var:+"123"} #没有被声明,返回空
renhl@verygood:~/usb$ echo $var
renhl@verygood:~/usb$ var=; echo ${var:+"123"} #被声明为空,返回空
renhl@verygood:~/usb$ echo $var
renhl@verygood:~/usb$ var="ABC"; echo ${var:+"123"} #被声明,返回123
123
renhl@verygood:~/usb$ echo $var #不会被123赋值
ABC
renhl@verygood:~/usb$
6.${var=string}
如果var没有被声明, 返回string值(var被赋值)
renhl@verygood:~/usb$ unset var #删除var声明
renhl@verygood:~/usb$ echo ${var="123"} #没有被声明,返回123
123
renhl@verygood:~/usb$ echo $var #var被123赋值
123
renhl@verygood:~/usb$ var=; echo ${var="123"} #声明为空,返回为空
renhl@verygood:~/usb$ echo $var
renhl@verygood:~/usb$ var="ABC"; echo ${var="123"} #声明为非空,返回为声明值
ABC
renhl@verygood:~/usb$ echo $var #var不会被123赋值
ABC
renhl@verygood:~/usb$
7.${var:=string}
如果var没有被声明或其值为空, 那么就以string赋值给var
renhl@verygood:~/usb$ unset var #删除var声明
renhl@verygood:~/usb$ echo ${var:="123"} #未声明,返回123
123
renhl@verygood:~/usb$ echo $var #var被123赋值
123
renhl@verygood:~/usb$ var=; echo ${var:="123"} #声明为空,返回123
123
renhl@verygood:~/usb$ echo $var #var被123赋值
123
renhl@verygood:~/usb$ var="ABC"; echo ${var:="123"} #声明为非空,返回声明值
ABC
renhl@verygood:~/usb$ echo $var #var不被123赋值
ABC
renhl@verygood:~/usb$
8.${var?string}
如果var没有被声明, 那么以string作提示并终止脚本
renhl@verygood:~/usb$ unset var #var未声明
renhl@verygood:~/usb$ echo ${var?"123"} #报错
-bash: var: 123
renhl@verygood:~/usb$ var=; echo ${var?"123"} #var声明为空,返回声明值
renhl@verygood:~/usb$ echo $var
renhl@verygood:~/usb$ var="ABC"; echo ${var?"123"} #var声明为非空,返回声明值
ABC
renhl@verygood:~/usb$ echo $var #var不被123赋值
ABC
renhl@verygood:~/usb$
9.${var:?string}
如果var没有被声明或其值为空, 那么以string作提示并终止脚本
renhl@verygood:~/usb$ unset var #删除var声明
renhl@verygood:~/usb$ echo ${var:?"123"} # var未被声明,报错
-bash: var: 123
renhl@verygood:~/usb$ var=; echo ${var:?"123"} # var声明为空,报错
-bash: var: 123
renhl@verygood:~/usb$ var="ABC"; echo ${var:?"123"} #var声明为非空,返回声明值
ABC
renhl@verygood:~/usb$ echo $var #var不被123赋值
ABC
renhl@verygood:~/usb$
10. ${#var}
字符串var的长度
renhl@verygood:~$ str="abc123";echo ${#str} #字符长度为6
6
renhl@verygood:~$
11.${!xxx*}或${!xxx@}
查找出已经定义的以xxx开头的变量
renhl@verygood:~$ str1="123";str2="456";str3="789";echo ${!str*} #以str开头的变量名
str str1 str2 str3
renhl@verygood:~$ str1="123";str2="456";str3="789";echo ${!str@} #以str开头的变量名
str str1 str2 str3
renhl@verygood:~$