shell 两种变量的表示方法,大括号的作用

在shell中,取一个变量值的方法——$varname的语法实际上是常用语法${varname}的简写形式

 

个人倒感觉,加上这个大括号,虽然多写了点东西,不过从后面的内容(毕竟我是先看的书嘛,后面的悄悄瞧了点)来看,还是有必要的。

为什么会有两种语法呢?

一个原因是:当代码中引用了多于9个位置参数,则必须使用常用语法${10},而不是$10。

  #/bin/bash
  echo "$# args"
  echo $1, $2, $3, $4, $5, $6, $7, $8, $9, $1 0

如果是这样的话,执行./paramlist 1,2,3,4,5,6,7,8,9,0

得到的结果为:

10 args
1,2,3,4,5,6,7,8,9,10

如果执行./paramlist 1,2,3,4,5,6,7,8,9,a

得到的结果仍然为:

10 args
1,2,3,4,5,6,7,8,9,10

所以说,代码中引用了多于9个位置参数时,则必须使用常用语法${10}而不是$10

另外让我们考虑下面的情况,即用户的变量名后面有一个下划线

echo $UID_

shell会试图使用UID_作为变量名。除非出现$UID_已经存在的偶然情况,否则该语句不会打印任何内容(为null或空字符串)

要得到预期结果需要将该变量放入大括号内

echo ${UID}_

如果变量后面跟一个非小字字符串、数字或下划线,则省略大括号就没问题。

是不是很难懂?我也烦这种浪费脑细胞的话,

所以这句话翻译成人能听得懂的话就是:

 

如果变量名后面要跟如下内容:非小写字符串(包括大小字符串)、数字或下划线,那么变量名就一定要用大括号包起来

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shenghuiping2001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值