最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Shell中數(shù)組以及其相關(guān)操作的詳細實例

 更新時間:2021年04月07日 09:05:23   作者:杰瑞26  
這篇文章主要給大家介紹了關(guān)于Shell中數(shù)組以及其相關(guān)操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

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

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

【數(shù)組聲明】

備注:

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

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

【數(shù)組定義】

備注:

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

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

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

【數(shù)組長度】

備注:

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

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

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

【數(shù)組索引】

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

元素刪除】 

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

【數(shù)組遍歷】

腳本輸出:

備注:

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

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

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

【數(shù)組賦值】

備注:

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

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

【數(shù)組添加】

【數(shù)組切片】

數(shù)組切片

元素切片

備注:

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

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

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

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

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

【數(shù)組替換】

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

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

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

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

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

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

【數(shù)組刪除】

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

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

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

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

【數(shù)組應用】

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

腳本輸出:

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

腳本輸出:

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

腳本輸出:

備注:

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

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

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

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

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

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

示例四: 將字符串處理后轉(zhuǎn)為為數(shù)組,再對其打印輸出

腳本輸出:

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

腳本輸出:

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

腳本輸出:

示例七:  對數(shù)組中的元素進行排序

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

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

腳本輸出:

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

示例十一:  設(shè)置IFS,讀取文件內(nèi)容示例

示例十二:  利用eval,模擬實現(xiàn)數(shù)組的功能

腳本輸出:

示例十三:  利用數(shù)組來實現(xiàn)冒泡排序

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

腳本輸出:

示例十四:  利用數(shù)組來求最大值

腳本輸出

總結(jié)

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

相關(guān)文章

  • shell腳本查看k8s日志介紹

    shell腳本查看k8s日志介紹

    大家好,本篇文章主要講的是shell腳本查看k8s日志介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • linux腳本判斷條件總結(jié)(必看)

    linux腳本判斷條件總結(jié)(必看)

    下面小編就為大家?guī)硪黄猯inux腳本判斷條件總結(jié)(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Gearman::XS在Centos下的編譯安裝方法

    Gearman::XS在Centos下的編譯安裝方法

    這篇文章主要介紹了Gearman::XS在Centos下的編譯安裝方法,需要的朋友可以參考下
    2014-07-07
  • Shell字符串比較相等、不相等方法小結(jié)

    Shell字符串比較相等、不相等方法小結(jié)

    這篇文章主要介紹了Shell字符串比較相等、不相等方法小結(jié),本文直接給出代碼,但代碼中含有大量注釋,需要的朋友可以參考下
    2014-10-10
  • Linux?top命令詳解

    Linux?top命令詳解

    top命令是Linux下常用的性能分析工具,能夠?qū)崟r顯示系統(tǒng)中各個進程的資源占用狀況,類似于Windows的任務管理器,這篇文章主要介紹了Linux?top命令詳解,包括top命令的使用,需要的朋友可以參考下
    2022-10-10
  • shell數(shù)組操作簡明總結(jié)

    shell數(shù)組操作簡明總結(jié)

    這篇文章主要介紹了shell數(shù)組操作總結(jié),這里包括數(shù)組的聲明、訪問、復制、計算、刪除、替換等操作,需要的朋友可以參考下
    2014-05-05
  • ubuntu下常用apt命令介紹

    ubuntu下常用apt命令介紹

    這篇文章介紹了ubuntu的常用apt命令,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • 使用shell腳本分析網(wǎng)站日志統(tǒng)計PV、404、500等數(shù)據(jù)

    使用shell腳本分析網(wǎng)站日志統(tǒng)計PV、404、500等數(shù)據(jù)

    這篇文章主要介紹了使用shell腳本分析網(wǎng)站日志統(tǒng)計PV(瀏覽量)、404、500等數(shù)據(jù),用一個腳本來實現(xiàn),需要的朋友可以參考下
    2014-05-05
  • shell腳本命令行參數(shù)簡介

    shell腳本命令行參數(shù)簡介

    本文詳細介紹了shell腳本命令行參數(shù)的用法,在shell腳本中要注意命令行參數(shù)怎么使用,這也是shell編程中的重點內(nèi)容,有需要的朋友參考下。
    2014-04-04
  • Linux 刪除文件夾和文件的命令(強制刪除包括非空文件)

    Linux 刪除文件夾和文件的命令(強制刪除包括非空文件)

    linux刪除目錄很簡單,很多人還是習慣用rmdir,不過一旦目錄非空,就陷入深深的苦惱之中,現(xiàn)在使用rm -rf命令即可。接下來通過本文給大家介紹Linux 刪除文件夾和文件的命令(強制刪除包括非空文件),感興趣的朋友跟隨腳本之家小編一起學習吧
    2018-05-05

最新評論

疏勒县| 昌宁县| 西和县| 汽车| 嘉荫县| 平舆县| 东宁县| 宾川县| 兴安县| 上饶县| 鲜城| 镇沅| 广东省| 通州市| 巴中市| 滨州市| 迭部县| 西城区| 监利县| 山丹县| 东宁县| 涟水县| 伊川县| 股票| 新昌县| 莎车县| 涞水县| 新乡市| 成武县| 遵义市| 焉耆| 奇台县| 乐平市| 阳山县| 拉萨市| 翁牛特旗| 荔波县| 麦盖提县| 孝义市| 宿州市| 永康市|