Shell中创建序列和数组(list、array)的方法
关于linux数组定义,以及生成方法,请看:linuxshell动态生成数组系列seq使用技巧。这里我主要说的是高效生成list字符串,还有数组方法。
一、seq方法生成:
[chengmo@centos5shell]$aNumList=$(seq100); [chengmo@centos5shell]$echo$aNumList 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
aNumList得到是字符串,不同之处以:空格分隔开。在linux里面,可以把它看作是list.可以通过for…in 循环读取。
[chengmo@centos5shell]$foriin$aNumList;doecho$i;done; 1 2 3 4……
如果需要生成array只需要将$(seq100)再加个”()”即可。
[chengmo@centos5~]$aNumList=($(seq100)); [chengmo@centos5~]$echo$aNumList 1 [chengmo@centos5~]$echo${#aNumList[@]} 100
长度是100的数组。
二、通过内部{begin..end}生成
这种方法生成seq非常方便。通过内部运算符完成。
[chengmo@centos5~]$echo{1..10} 12345678910 [chengmo@centos5~]$forain{1..10};doecho$a;done; 1 2 3 4 5 6 7 8 9 10
三、性能比较
[chengmo@centos5~]$timeecho{1..100} 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 real0m0.000s user0m0.001s sys0m0.000s [chengmo@centos5~]$timeecho$(seq100) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 real0m0.003s user0m0.002s sys0m0.001s
从上面可以看到,{begin..end}速度比seq调用快了不少了。以后调用时候可以考虑通过内部操作符完成。