Shell技能树---字符串取值

  • 功能介绍

       字符串取值是字符串变量的读取。针对字符串变量未声明或者为空的特殊返回值。

  • 语法格式

      :空测试    -  负向测试   + 正向测试   = 赋值    ?有问题,错误

序号

格式

说明

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:~$

  • 20
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值