首页 > linux > shell 变量语法详解--两种声明变量方式,及大括号的作用
2009五月20

shell 变量语法详解--两种声明变量方式,及大括号的作用

貌似之前写技术类博客的做法不是很正确,嗯,一写就一大长篇,就算真正有需要的人看也会烦。

所以这回,我决定,按照书中的来,分成小节。这样自己也会吃的消,不至于一篇日志敲很多字,嗯。

呵,这节说是“shell 变量语法详解”,其实也不是很详,因为这节在书中就很短 :cry:

不过,咋说也是细节性问题,如果不注意,以后可能就学不好SHELL了,所以要认真。LET‘S GO~

文中开始就有一句话“在介绍用shell变量实现的许多功能前”,呵这足以说明,大家真正感兴趣(尤其是我)的地方不远了。

在shell中,取一个变量值的方法——$varname的语法实际上是常用语法${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 $UID_

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

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

echo ${UID}_

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

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

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

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

文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/05/20/553/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

4 Responses to “shell 变量语法详解--两种声明变量方式,及大括号的作用”

  1. #1 破口大说 回复 | 引用 Post:2009-05-21 12:43

    我不懂 SHELL,我会 PHP,很高兴能你能到我的小站留言,你的博客怎么没有留言板呢?

    [回复]

  2. #2 simaopig 回复 | 引用 Post:2009-05-21 16:16

    @破口大说
    呵呵,有留言板的啊。
    唠呗就是。呵呵。

    [回复]

  3. #3 sellmad 回复 | 引用 Post:2009-12-19 12:38

    有收获,谢谢

    [回复]

  4. #4 simaopig 回复 | 引用 Post:2009-12-21 12:52

    @sellmad
    呵,好久没写shell的文章,也没有看shell的教程了。

    [回复]

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)