linux shell 數(shù)組建立及使用技巧_第1頁
linux shell 數(shù)組建立及使用技巧_第2頁
linux shell 數(shù)組建立及使用技巧_第3頁
linux shell 數(shù)組建立及使用技巧_第4頁
linux shell 數(shù)組建立及使用技巧_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、chengmocentos5 $ a=(1 2 3 4 5chengmocentos5 $ echo $a1一對括號表示是數(shù)組,數(shù)組元素用 “ 空格 ” 符號分割開。2. 數(shù)組讀取與賦值得到長度:chengmocentos5 $ echo $#a5用 $#數(shù)組名 或 * 可以得到數(shù)組長度讀取:chengmocentos5 $ echo $a23chengmocentos5 $ echo $a*1 2 3 4 5用 $數(shù)組名 下標(biāo) 下標(biāo)是從 0開始 下標(biāo)是:*或者 得到整個數(shù)組內(nèi)容賦值 :chengmocentos5 $ a1=100chengmocentos5 $ echo $a*1 100

2、3 4 5chengmocentos5 $ a5=100chengmocentos5 $ echo $a*1 100 3 4 5 100直接通過 數(shù)組名 下標(biāo) 就可以對其進(jìn)行引用賦值, 如果下標(biāo)不存在, 自動添加新一個數(shù)組元素 刪除 :chengmocentos5 $ a=(1 2 3 4 5chengmocentos5 $ unset achengmocentos5 $ echo $a*chengmocentos5 $ a=(1 2 3 4 5chengmocentos5 $ unset a1chengmocentos5 $ echo $a*1 3 4 5chengmocentos5 $ e

3、cho $#a*4直接通過:unset 數(shù)組 下標(biāo) 可以清除相應(yīng)的元素,不帶下標(biāo),清除整個數(shù)據(jù)。3. 特殊使用分片 :chengmocentos5 $ a=(1 2 3 4 5chengmocentos5 $ echo $a:0:31 2 3chengmocentos5 $ echo $a:1:42 3 4 5chengmocentos5 $ c=($a:1:4chengmocentos5 $ echo $#c4chengmocentos5 $ echo $c*2 3 4 5直接通過 $數(shù)組名 或 *:起始位置 :長度 切片原先數(shù)組,返回是字符串,中間用 “ 空格 ” 分 開,因此如果加上 ”

4、(” ,將得到切片數(shù)組,上面例子:c 就是一個新數(shù)據(jù)。替換 :chengmocentos5 $ a=(1 2 3 4 5chengmocentos5 $ echo $a/3/1001 2 100 4 5chengmocentos5 $ echo $a1 2 3 4 5chengmocentos5 $ a=($a/3/100chengmocentos5 $ echo $a1 2 100 4 5調(diào)用方法是:$數(shù)組名 或 */查找字符 /替換字符 該操作不會改變原先數(shù)組內(nèi)容, 如果需要 修改,可以看上面例子,重新定義數(shù)據(jù)。從上面講到的,大家可以發(fā)現(xiàn) linux shell 的數(shù)組已經(jīng)很強(qiáng)大了, 常見

5、的操作已經(jīng)綽綽有余了 linux shell 動態(tài)生成 數(shù)組系列 seq 使用技巧2010-12-30 16:36:22 閱讀 5 評論 0 字號:大中小 訂閱如果對 linux shell 數(shù)組不是很熟悉的話, 請看上一篇文章:linux shell 數(shù)組建立及使用技巧 , 這篇文章主要講是動態(tài)生成數(shù)組系列。 方法應(yīng)該很多, 我這里主要以一個求和計算的題目為 例進(jìn)行分析。題目:請用 linux shell 寫一段腳本,實(shí)現(xiàn)從 1.1000中所有偶數(shù)的和值。方法一:通過 while 循環(huán)得到需要的結(jié)果:start=1;total=0;while $start -le 1000 ;do $($s

6、tart%2 = 0 &&total=$($total+$start;start=$($start+1;done;echo $total;chengmocentos5 $ start=1;total=0;while $start -le1000 ;do $($start%2 =0 &&total=$($total+$start; start=$($start+1;done;echo $total; 250500以上運(yùn)行結(jié)果是:249500, 在 linux shell 中, ”;” 作為命令行分隔符。如果大家對于 $( 運(yùn) 算符號不是很理解,可以查看:linux

7、 shell 實(shí)現(xiàn) 四則運(yùn)算(整數(shù)及浮點(diǎn) 簡單方法 ,如 果對于: 符號,可以參考另外一篇文章 linux shell 邏輯運(yùn)算符、邏輯表達(dá)式詳解 。方法二:通過 for 循環(huán)得到結(jié)果:start=0;total=0;for i in $(seq $start 2 1000; dototal=$($total+$i;done;echo $total;chengmocentos5 $ start=0;total=0;for i in $(seq $start 2 1000;do total=$($total+$i;done;echo $total;250500上面語句已經(jīng)代碼方面明顯優(yōu)于方法一,

8、而且性能方面表現(xiàn)也很好。下面比較就可以發(fā)現(xiàn):比較性能:chengmocentos5 $ time (start=0;total=0;for i in $(seq $start 2 1000; do total=$($total+$i;done;echo $total; 250500real 0m0.016suser 0m0.012ssys 0m0.003schengmocentos5 $ time (start=1;total=0;while $start -le1000 ;do $($start%2 =0 &&total=$($total+$start; start=$($s

9、tart+1;done;echo $total; 250500real 0m0.073suser 0m0.069ssys 0m0.004s方法一耗時 是方法二的 6倍!seq 使用:seq OPTION. LASTseq OPTION. FIRST LASTseq OPTION. FIRST INCREMENT LASTchengmocentos5 $ seq 1000 起始默認(rèn)是 1,間隔默認(rèn)也是 1chengmocentos5 $seq 2 1000 間隔默認(rèn)是 1chengmocentos5 $seq 1 3 10 ' 從 1開始,到 10 間隔為 3 結(jié)果是:1 4 7 10 說明:默認(rèn)間隔是 “ 空格 ” 如果想換成其它的可以帶參數(shù):-schengmocentos5 $seq -s'#' 1 3 101#4#7#10應(yīng)用技巧:生成連續(xù)數(shù)組系列:chengmocentos5 $ a=($(seq 1 3 10chengmocentos5 $ echo $a14chengmocento

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論