Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3045961
  • 博文数量: 535
  • 博客积分: 15788
  • 博客等级: 上将
  • 技术积分: 6507
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-07 09:11
文章分类

全部博文(535)

文章存档

2016年(1)

2015年(1)

2014年(10)

2013年(26)

2012年(43)

2011年(86)

2010年(76)

2009年(136)

2008年(97)

2007年(59)

分类: Python/Ruby

2010-09-30 10:11:08

间接引用
这种使用间接引用的方法是一个小技巧. 如果第二个变量更改了它的值, 那么第一个变量必须被适当的解除引用
幸运的是, 在Bash版本2中引入的${!variable}形式使得使用间接引用更加直观了.
假设一个变量的值是第二个变量的名字. 那么我们如何从第一个变量中取得第二个变量的值呢? 比如,
如果a=letter_of_alphabet并且letter_of_alphabet=z, 那么我们能够通过引用变量a来获得z么? 这确
实是可以做到的, 它被称为间接引用. 它使用eval var1=\$$var2这种不平常的形式.


a=1
b=2
c=3

for name in a b c
do

   number=${!name}
   echo $number
done




ash中还可以使用数组变量,其赋值有两种:
(1) name = (value1 ... valuen) 
此时下标从0开始,
也可以:names=([2]=alice [0]=hatter [1]=duchess)
(2) name[index] = value
数组下标的范围没有任何限制,同时也不必使用连续的分量。可以通过${array[i]}.访问数组中的元素。如果不指定元素,则表示第一个元素。*相同,但是使用时加引号,并在引号中返回每个参数,*则作为一个整体的字符串返回。

显示目前有值的数组序号:――bash 3.0以后才支持。
# echo ${!A[@]}
0 1 2 3
//取得数组元素的个数
# echo ${#A[@]}
4
显示第3个元素里面的元素的个数:
echo ${#A[3]}
3
//清除变量
$ unset A
$ echo ${A[@]}
$
A=B 
B=C 
unset $A 
事实上所取消的变量是 B 而不是 A
 
//清空变量,即将值变为空
$ A=
$ echo ${A[@]}
$
 

阅读(3278) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~