婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Shell中數組以及其相關操作的詳細實例

Shell中數組以及其相關操作的詳細實例

熱門標簽:電話機器人對家居行業(yè)幫助大嗎 沈陽ai電銷智能機器人 AI智能電銷機器人壞處 黑暗之魂3地圖標注 合肥電銷外呼系統供應商 地圖標注審核周期 蘭州電銷機器人加盟 如何申請400的電話呀 電商外呼系統排名

Shell中數據類型不多,比如說字符串,數字類型,數組。數組是其中比較重要的一種,其重要應用場景,可以求數組長度,元素長度,遍歷其元素,元素切片,替換,刪除等操作,使用非常方便。

Shell中的數組不像JAVA/C,只能是一維數組,沒有二維數組;數組元素大小無約束,也無需先定義數組的元素個數;但其索引則像JAVA/C/Python,從0開始,下面其常用的方式進行總結.

【數組聲明】

備注:

1) 不像JAVA/C等強編程語言,在賦值前必須聲明;SHELL只是弱編程語言,可事先聲明也可不聲明;

2) 用unset來撤銷數組,可用unset array_name[i]來刪除里面的元素

【數組定義】

備注:

1) 數組中的元素,必須以"空格"來隔開,這是其基本要求;

2) 定義數組其索引,可以不按順序來定義,比如說:names=([0]=Jerry [1]=Alice [2]=David [8]=Wendy);

3)字符串是SHELL中最重要的數據類型,其也可通過($str)來轉成數組,操作起來非常方便;

【數組長度】

備注:

1) 使用${array_name[@]} 或者 ${array_name[*]} 都可以全部顯示數組中的元素

2) 同樣道理${#array_name[@]} 或者 ${#array_name[*]}都可以用來求數組的長度

3)求數組中元素的長度方法有很多,相當于求字符串的長度

【數組索引】

[root@locathost ~]# s="A,B,C,D"
[root@locathost ~]# a=(`echo $s | tr ',' ' '`)  # 將字符串轉變成數組
[root@locathost ~]# echo ${!a[@]}        # 求數組中的索引 
0 1 2 3

元素刪除】 

[root@localhost ~]# a=(A B C D)
[root@localhost ~]# unset a[2]     # 刪除索引為2的元素
[root@localhost ~]# echo ${a[@]}    # 顯示刪除后的元素
A B D

【數組遍歷】

腳本輸出:

備注:

1) 可以使用標準的for循環(huán),這種類C語言的方式來遍歷數組中的元素

2) for 元素 in 元素集(數組) 這種類Python的方式來遍歷數組

3)從代碼可讀性與執(zhí)行速度來看,推薦使用第二種方式

【數組賦值】

備注:

1) 第一種是給已經存在的元素項重新賦值

2) 當然也可以給不存在的索引添加賦值,可以看下面的示例

【數組添加】

【數組切片】

數組切片

元素切片

備注:

1) 通用的格式${array[@]:起始位置:長度},中間以":"隔開,如果第二項省略的話,就取后面所有的項

2) 切片后返回的是字符串,可以通過 新數組=(${舊數組[@]:索引:長度})來索引,參見上面最后一個例子

3) 區(qū)別于Python之一:起始位置可以為負數,但必須以放在()中,長度不能為負數

4)區(qū)別于Python之二:第二項在Python里面是結束索引,在Shell則代表所取元素的長度

5) 區(qū)別于Python之三:Python可以通過 list[-1:-4:-2]來反向取數,在Shell則實現不了

【數組替換】

${array[@]/x/y}     最小匹配替換,每個元素只替換一次

${array[@]//x/y}    最大匹配替換,每個元素可替換多次

${array[@]/x/}      最小匹配刪除,只刪除一個符合規(guī)定的元素

${array[@]//x/}     最大匹配刪除,可刪除多個符合規(guī)定的元素

${array[@]/#x/y}     從左往右匹配替換,只替換每個元素最左邊的字符

${array[@]/%x/y}     從右往左匹配替換,只替換每個元素最右邊的字符

【數組刪除】

#  每個元素,從左向右進行最短匹配

## 每個元素,從左向右進行最長匹配

%  每個元素,從右向左進行最短匹配

%% 每個元素,從右向左進行最長匹配

【數組應用】

示例一: 將ifconfig命令取到的本地IP: 127.0.0.1逐行顯示出來

腳本輸出:

示例二: 模擬堆棧的push,pop,shift,unshift操作

腳本輸出:

示例三: 在1-10間,隨機生成10個不重復的數,將其放置于數組中

腳本輸出:

備注:

1) 生成[1,10]范圍內不重復的隨機整數,并保存到數組array中

2) seq 1 10 用于生成1~10的整數序列(包含邊界值1和10)

3) awk中的rand()函數用于隨機產生一個0到1之間的小數值(保留小數點后6位)

4)rand()只生成一次隨機數,要使用srand()函數使隨機數滾動生成

5) 括號里留空即默認采用當前時間作為隨機計數器的種子,這樣以秒為間隔,隨機數就能滾動隨機生成了

6) 由于以秒為間隔,所以如果快速連續(xù)運行兩次腳本(1s內),你會發(fā)現生成的隨機數還是一樣的

示例四: 將字符串處理后轉為為數組,再對其打印輸出

腳本輸出:

示例五: 用read -a參數,從標準輸入中讀取數組,再做操作

腳本輸出:

示例六:  判斷某個變量,是否在數組中,在輸出YES,否輸出NO

腳本輸出:

示例七:  對數組中的元素進行排序

示例八:  將/etc/passwd文件中以:分隔的第一列,即用戶名放置于一個數組中

示例九:  將1-8,每個數自乘后輸出

腳本輸出:

示例十:  借助數組來設置SHELLS的環(huán)境變量

示例十一:  設置IFS,讀取文件內容示例

示例十二:  利用eval,模擬實現數組的功能

腳本輸出:

示例十三:  利用數組來實現冒泡排序

思路:會重復地走訪過要排序的數組,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。越大的元素會經由交換慢慢“浮”到數列的頂端

腳本輸出:

示例十四:  利用數組來求最大值

腳本輸出

總結

到此這篇關于Shell中數組以及其相關操作的文章就介紹到這了,更多相關Shell數組操作內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Shell腳本數組操作小結
  • Shell腳本數組用法小結
  • linux shell數組深入學習理解
  • shell for循環(huán)與數組應用介紹
  • linux shell 中數組的定義和for循環(huán)遍歷的方法
  • Linux shell數組循環(huán)的實例詳解
  • Shell中創(chuàng)建序列和數組(list、array)的方法
  • shell 使用數組作為函數參數的方法(詳解)
  • 淺談shell數組的定義及循環(huán)
  • Shell動態(tài)生成數組的多種方法

標簽:河池 隴南 通遼 淮南 常州 黔南 河北 黔南

巨人網絡通訊聲明:本文標題《Shell中數組以及其相關操作的詳細實例》,本文關鍵詞  Shell,中,數組,以,及其,相關,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Shell中數組以及其相關操作的詳細實例》相關的同類信息!
  • 本頁收集關于Shell中數組以及其相關操作的詳細實例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 苍梧县| 澄城县| 壤塘县| 游戏| 正宁县| 蛟河市| 名山县| 竹北市| 惠安县| 临漳县| 乌拉特后旗| 西藏| 德清县| 蕉岭县| 孝感市| 和田市| 万山特区| 南华县| 定襄县| 庄浪县| 平山县| 六盘水市| 临沭县| 铜川市| 西乡县| 肇源县| 南阳市| 来安县| 华宁县| 柳州市| 金昌市| 夏津县| 同心县| 灵寿县| 泾阳县| 陇西县| 屏边| 临潭县| 大新县| 淮南市| 高州市|