免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Linux Shell 動(dòng)態(tài)生成 數(shù)組系列 Seq 使用技巧


作者:程默

www.cnblogs.com/chengmo/archive/2010/09/30/1839668.html

如有好文章投稿,請(qǐng)點(diǎn)擊 → 這里了解詳情


如果對(duì)linux shell 數(shù)組不是很熟悉的話,請(qǐng)看上一篇文章:Linux Shell 數(shù)組建立及使用技巧 ,這篇文章主要講是動(dòng)態(tài)生成數(shù)組系列。方法應(yīng)該很多,我這里主要以一個(gè)求和計(jì)算的題目為例進(jìn)行分析。


題目:請(qǐng)用linux shell 寫一段腳本,實(shí)現(xiàn)從1..1000中所有偶數(shù)的和值。


方法一:


通過while 循環(huán)得到需要的結(jié)果:


start=1;

 

total=0;

 

while [ $start -le 1000 ];do

 

    [[ $(($start%2)) == 0 ]]&&total=$(($total $start));

 

   start=$(($start 1));

 

done;

 

echo $total;


[chengmo@centos5 ~]$ start=1;total=0;while [ $start -le 1000 ];do [[ $(($start%2)) == 0 ]]&&total=$(($total $start)); start=$(($start 1));done;echo $total;

250500


以上運(yùn)行結(jié)果是:249500,在linux shell 中,”;”作為命令行分隔符。如果大家對(duì)于$(()) 運(yùn)算符號(hào)不是很理解,可以查看:linux shell 實(shí)現(xiàn) 四則運(yùn)算(整數(shù)及浮點(diǎn)) 簡(jiǎn)單方法 ,如果對(duì)于:[[]] [] 符號(hào),可以參考另外一篇文章linux shell 邏輯運(yùn)算符、邏輯表達(dá)式詳解


方法二:


通過 for 循環(huán)得到結(jié)果:


start=0;

 

total=0;

 

for i in $(seq $start 2 1000); do

 

    total=$(($total $i));

 

done;

 

echo $total;


[chengmo@centos5 ~]$ start=0;total=0;for i in $(seq $start 2 1000); do total=$(($total $i));done;echo $total;

250500


上面語句已經(jīng)代碼方面明顯優(yōu)于方法一,而且性能方面表現(xiàn)也很好。下面比較就可以發(fā)現(xiàn):


比較性能:


[chengmo@centos5 ~]$ time (start=0;total=0;for i in $(seq $start 2 1000); do total=$(($total $i));done;echo $total;) 250500

real 0m0.016s

user 0m0.012s

sys 0m0.003s

[chengmo@centos5 ~]$ time (start=1;total=0;while [ $start -le 1000 ];do [[ $(($start%2)) == 0 ]]&&total=$(($total $start)); start=$(($start 1));done;echo $total;)

250500

real 0m0.073s

user 0m0.069s

sys 0m0.004s


方法一耗時(shí) 是方法二的 6倍!


seq 使用:


seq [OPTION]... LAST

seq [OPTION]... FIRST LAST

seq [OPTION]... FIRST INCREMENT LAST


[chengmo@centos5 ~]$ seq 1000 ‘起始默認(rèn)是 1,間隔默認(rèn)也是1

[chengmo@centos5 ~]$seq 2 1000 ‘間隔默認(rèn)是1

[chengmo@centos5 ~]$seq 1 3 10 '從1開始,到10 間隔為3 結(jié)果是:1 4 7 10


說明:默認(rèn)間隔是“空格” 如果想換成其它的可以帶參數(shù):-s


[chengmo@centos5 ~]$seq -s'#' 1 3 10

1#4#7#10


應(yīng)用技巧:


生成連續(xù)數(shù)組系列:


[chengmo@centos5 ~]$ a=($(seq 1 3 10))

[chengmo@centos5 ~]$ echo ${a[1]}

4

[chengmo@centos5 ~]$ echo ${a[@]}

1 4 7 10


生成連續(xù)相同字符:


[chengmo@centos5 ~]$ seq -s '#' 30 | sed -e 's/[0-9]*//g'

#############################


上面例子:通過加入間隔字符‘?!?,替換掉數(shù)字, 生成連續(xù)相同字符’#’,這個(gè)在以后書寫中還是有不少幫助。


本系列:




看完本文有收獲?請(qǐng)分享給更多人

關(guān)注「Linux 愛好者」,提升Linux技能

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
linux shell 數(shù)組建立及使用技巧
linux shell 實(shí)現(xiàn) 四則運(yùn)算(整數(shù)及浮點(diǎn)) 簡(jiǎn)單方法
linux shell實(shí)現(xiàn)隨機(jī)數(shù)多種方法(date,random,uuid)
linux shell 管道命令(pipe)使用及與shell重定向區(qū)別
linux shell數(shù)據(jù)重定向(輸入重定向與輸出重定向)詳細(xì)分析
管理多tomcat服務(wù)shell腳本(CentOS)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服