Shell基础——Shell参数和变量扩展

1. 基本格式

Shell参数和变量扩展的最基本的格式是

${parameter}

如果parameter是数字,则是参数扩展;如果parameter是字符串,则是变量扩展;如果parameter是数组,遵循数组的扩展规则;parameter还可以是@, *, #, ?, -等,参考特殊参数的扩展。
只要在不引起混淆的情况下,{ }是可以省略的,比如

$ set -- a b c d e f g h i j k l m n
$ echo $12
a2
$ echo ${1}2
a2
$ echo ${12}
l
$ var=Hello
$ echo ${var}World
HelloWorld
$ echo $varWorld

在这种基础格式上,衍生出多种功能

2. ! 间接扩展

第一种情况,如果parameter不是nameref变量(参见declare内置命令

$ var1=abc
$ var2=var1
$ echo ${var2}
var1
$ echo ${!var2}
abc

第二种情况,如果parameter是nameref变量

$ var1=abc
$ declare -n var2=var1
$ echo ${!var2}
var1

3. 条件扩展

条件扩展就是根据parameter是否存在,值是否是null来决定扩展出什么值。

3.1 缺省值扩展 -, :-

${parameter-word} # 如果parameter不存在,则扩展出的值为word,否则为parameter的值
${parameter:-word} # 如果parameter不存在,或者parameter存在但值为null,则扩展出的值为word,否则为parameter的值
$ echo ${unknown-abc}
abc
$ echo ${unknown:-abc}
abc
$ unknown=
$ echo ${unknown-abc}

$ echo ${unknown:-abc}
abc
$ echo ${unknown}

$ unknown=123
$ echo ${unknown-abc}
123
$ echo 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值