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

本文详细介绍了Shell的参数和变量扩展,包括基本格式、! 间接扩展、条件扩展(如缺省值、赋值、校验、替换)、子串扩展、变量名扩展、数组索引/键值扩展、获取变量长度及数组元素数量,以及模式扩展和转换操作符。通过这些扩展,Shell提供了强大的字符串处理和变量管理功能。
摘要由CSDN通过智能技术生成

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 ${unknown:-abc}
123

3.2 赋值扩展 =, :=

${parameter=word} # 如果parameter不存在,则将word赋值给parameter
${parameter:=word} # 如果parameter不存在,或者parameter存在但值为null,则将word赋值给parameter
$ declare -p unknown
-bash: declare: unknown: not found
$ echo ${unknown=abc}
abc
$ echo ${unknown}
abc
$ unknown=
$ echo ${unknown}

$ echo ${unknown=abc}

$ echo ${unknown:=abc}
abc
$ echo ${unknown}
abc
$ unknown=123
$ echo ${unknown=abc}
123
$ echo ${unknown:=abc}
123

注意:位置参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值