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

在shell中,取一个变量值的方法—— v a r n a m e {varname}的简写形式

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

为什么会有两种语法呢?

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

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

如果是这样的话,执行./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 U I D s h e l l 使 U I D _ UID_已经存在的偶然情况,否则该语句不会打印任何内容(为null或空字符串)

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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/u011350541/article/details/80649035
今日推荐