亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

bash數組

2019-11-06 08:04:23
字體:
來源:轉載
供稿:網友

數組是包含多個相同或不同數據類型的集合,數組索引從零開始。本文有 15 個用 bash 操作數組的例子。

1. 聲明數組,賦值

當有變量為如下格式的時候,Bash 會自動創建數組。

name[index]=valuename 為數組名稱index 為任意數字,或表達式的最終計算值大于等于零??梢燥@式聲明數組通過 declare -a arrayname
$ cat arraymanip.sh#! /bin/bashUnix[0]='Debian'Unix[1]='Red hat'Unix[2]='Ubuntu'Unix[3]='Suse' echo ${Unix[1]} $./arraymanip.shRed hat

訪問數組元素使用括號,如 ${name[index]}

2. 聲明時初始化數組

通過指定元素列表來聲明數組,就不用一個一個分別初始化數組元素的,用空格隔開在括號里。

Syntax:declare -a arrayname=(element1 element2 element3)

如果數組元素包含空格符,用引號括起來。

#! /bin/bash$cat arraymanip.shdeclare -a Unix=('Debian' 'Red hat' 'Red hat' 'Suse' 'Fedora');

declare -a 聲明一個數組以及括號中的所有元素為數組元素。

3. 輸出整個 Bash 數組

有多種不同的方法來輸出整個數組。如果索引是 @ 或者 *,則引用數組所有元素。也可以使用循環,遍歷數組中每個元素再輸出。

echo ${Unix[@]} # Add the above echo statement into the arraymanip.sh#./t.shDebian Red hat Ubuntu Suse

如果引用數組元素,而不提供索引的話,就是引用數組的第一個元素,即索引為零的元素。

4. Bash 數組長度

可以使用特殊參數 $# 來獲得數組長度。

${#arrayname[@]} gives you the length of the array.

$ cat arraymanip.shdeclare -a Unix=('Debian' 'Red hat' 'Suse' 'Fedora');echo ${#Unix[@]} #Number of elements in the arrayecho ${#Unix}  #Number of characters in the first element of the array.i.e Debian$./arraymanip.sh46

5. 數組第 n 個元素的長度

${#arrayname[n]} 為數組第 n 個元素的長度。

$cat arraymanip.sh#! /bin/bash Unix[0]='Debian'Unix[1]='Red hat'Unix[2]='Ubuntu'Unix[3]='Suse' echo ${#Unix[3]} # length of the element located at index 3 i.e Suse $./arraymanip.sh4

6. 指定偏移和長度輸出數組

下面的例子是輸出 2 個數組元素,從第索引為3的元素開始。

$cat arraymanip.shUnix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'Openlinux');echo ${Unix[@]:3:2} $./arraymanip.shSuse Fedora

上面的例子返回里索引為 3 和 4 的元素。索引永遠由零開始。

7. 根據偏移和長度,輸出數組指定元素的一部分

輸出一個數組元素的前四個字符。如例,Ubuntu 是數組索引為 3 的元素,可以指定偏移和長度來獲取數組指定元素的一部分。

$cat arraymanip.sh#! /bin/bash Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');echo ${Unix[2]:0:4} ./arraymanip.shUbun

上面的例子取出索引為 2 的數組元素的前 4 個字符。

8. 搜索和替換數組元素

下面的例子,在數組元素中搜索 Ubuntu,替換為 SCO Unix

$cat arraymanip.sh#!/bin/bashUnix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux')echo ${Unix[@]/Ubuntu/SCO Unix} $./arraymanip.shDebian Red hat SCO Unix Suse Fedora UTS OpenLinux

但是,這個例子并沒有永久替換數組內容。

9. 添加元素到已存在的 Bash Array

下面的例子展示了如何添加元素到已存在數組。

$cat arraymanip.shUnix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');Unix=("${Unix[@]}" "AIX" "HP-UX")echo ${Unix[7]} $./arraymanip.shAIX

‘AIX’ and ‘HP-UX’ are added in 7th and 8th index respectively.在數組 Unix 中,元素 ‘AIX’ 和 ‘HP-UX’ 添加到第 7 和 第 8 位。

10. 刪除數組元素

unset 用于移除數組元素,unset 與給數組元素賦值為 null 是一樣的效果。

$cat arraymanip.sh#!/bin/bashUnix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux')unset Unix[3]echo ${Unix[3]}

以上例子,會輸出 null 在索引為 3 的值。下面的例子顯示如果完全從數組中刪除。

$ cat arraymanip.shUnix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');pos=3Unix=(${Unix[@]:0:$pos} ${Unix[@]:$(($pos + 1))})echo ${Unix[@]} $./arraymanip.shDebian Red hat Ubuntu Fedora UTS OpenLinux

本例中,${Unix[@]:0:$pos} 將輸出 3 個元素從索引為 0 開始。合并以上的輸出。這是刪除數組元素的一個方法。

11. 使用模式 (Patterns) 刪除數組元素

在搜索條件,可以給出模式 (Patterns),存儲其余元素到另外一個數組。

$ cat arraymanip.sh#!/bin/bashdeclare -a Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora');declare -a patter=( ${Unix[@]/Red*/} )echo ${patter[@]} $ ./arraymanip.shDebian Ubuntu Suse Fedora

以上例子刪除數組元素形如 Red*

12. 復制數組

擴展數組元素,存儲到新的數組中。

#!/bin/bashUnix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');Linux=("${Unix[@]}")echo ${Linux[@]} $ ./arraymanip.shDebian Red hat Ubuntu Fedora UTS OpenLinux

13. 連接兩個 Bash 數組

擴展兩個數組,賦值給新數組。

$cat arraymanip.sh#!/bin/bashUnix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');Shell=('bash' 'csh' 'jsh' 'rsh' 'ksh' 'rc' 'tcsh'); UnixShell=("${Unix[@]}" "${Shell[@]}")echo ${UnixShell[@]}echo ${#UnixShell[@]} $ ./arraymanip.shDebian Red hat Ubuntu Suse Fedora UTS OpenLinux bash csh jsh rsh ksh rc tcsh14

輸出數組 ‘Unix’ 和 ‘Shell’ 中的所有元素,新數組一共有 14 個元素。

14. 刪除整個數組

使用 unset 刪除整個數組。

$cat arraymanip.sh#!/bin/bashUnix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');Shell=('bash' 'csh' 'jsh' 'rsh' 'ksh' 'rc' 'tcsh'); UnixShell=("${Unix[@]}" "${Shell[@]}")unset UnixShellecho ${#UnixShell[@]} $ ./arraymanip.sh0

unset 數組后,數組長度為零。

15. 加載文件內容到數組

可以逐行添加文件內容到數組。

#Example file$ cat logfileWelcometothegeekstuffLinuxUnix $ cat loadcontent.sh#!/bin/bashfilecontent=( `cat "logfile" `) for t in "${filecontent[@]}"doecho $tdoneecho "Read file content!" $ ./loadcontent.shWelcometothegeekstuffLinuxUnixRead file content!

以上例子中,數組中的所有元素均利用循環輸出。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产日韩精品在线观看| 91精品国产高清久久久久久久久| 国产成人精品日本亚洲专区61| 国产精品旅馆在线| 日韩中文字幕视频在线| …久久精品99久久香蕉国产| 68精品久久久久久欧美| 成人a级免费视频| 国产一区二区三区在线看| 国产精品视频999| 神马久久久久久| 国产精品美女无圣光视频| 国产亚洲精品久久久优势| 欧美大奶子在线| 亚洲片国产一区一级在线观看| 久久精品国产清自在天天线| 亚洲国产精品久久精品怡红院| 黑人精品xxx一区| 亚洲精品在线看| 亚洲精品网站在线播放gif| 欧美日韩国产精品一区二区不卡中文| 2019国产精品自在线拍国产不卡| 亚洲天堂av高清| 日韩视频亚洲视频| 九九热这里只有在线精品视| 欧美一级黑人aaaaaaa做受| 国产精品一区二区三区毛片淫片| 成人黄色片网站| 中文字幕精品一区久久久久| 日韩av免费在线| 成人国产在线激情| 国产高清视频一区三区| 国产aⅴ夜夜欢一区二区三区| 中文字幕av一区二区三区谷原希美| 欧美激情中文字幕在线| 国产精品露脸av在线| 国产精品www网站| 欧美激情区在线播放| 国产精品男人爽免费视频1| 最好看的2019年中文视频| 中文字幕亚洲无线码在线一区| 欧美成人sm免费视频| 91中文字幕在线| 38少妇精品导航| 国产精品爱久久久久久久| 国内精品一区二区三区四区| 亚洲情综合五月天| 久久久国产精彩视频美女艺术照福利| 国产成人avxxxxx在线看| 日韩精品在线观看一区二区| 性欧美亚洲xxxx乳在线观看| 亚洲成色777777在线观看影院| 黑人精品xxx一区一二区| 日韩高清av一区二区三区| 亚洲精品一区中文字幕乱码| 精品国产91乱高清在线观看| 日韩成人中文字幕| 欧美在线视频一二三| 精品亚洲一区二区三区在线播放| 精品久久久久久久久中文字幕| 亚洲最新视频在线| 一区二区三区动漫| 亚洲精品mp4| 高清欧美电影在线| 亚洲自拍偷拍网址| 欧美大片在线影院| 亚洲欧美国产精品久久久久久久| 欧美一区二区视频97| 日韩一区二区三区在线播放| 性欧美亚洲xxxx乳在线观看| 亚洲欧洲在线免费| 日韩在线视频免费观看| 久久伊人免费视频| 狠狠躁18三区二区一区| 国产噜噜噜噜久久久久久久久| 久久99国产精品久久久久久久久| 久久av在线播放| 成人激情视频在线播放| 96pao国产成视频永久免费| 国产91ⅴ在线精品免费观看| 国产精品一区二区久久久| 久久久久999| www.美女亚洲精品| 91在线观看免费观看| 欧美疯狂xxxx大交乱88av| 欧美性生活大片免费观看网址| 2018日韩中文字幕| 亚洲日韩欧美视频一区| 亚洲精品久久7777777| 久久亚洲一区二区三区四区五区高| 久久这里只有精品99| 欧美日韩中文字幕综合视频| 91精品一区二区| 亚洲天天在线日亚洲洲精| 伊人精品在线观看| 中文字幕免费精品一区| 午夜欧美大片免费观看| 日韩精品一区二区三区第95| 在线精品国产欧美| 色偷偷9999www| 人妖精品videosex性欧美| 国产亚洲一区精品| 色狠狠av一区二区三区香蕉蜜桃| 国产精品美女免费视频| 欧洲成人午夜免费大片| 久久亚洲精品小早川怜子66| 欧美日韩免费在线| 久热在线中文字幕色999舞| 国产精品v片在线观看不卡| 欧美午夜激情小视频| 亚洲精品91美女久久久久久久| 欧美人在线观看| 国产亚洲精品久久久优势| 日韩电影中文字幕在线观看| 久久夜色精品国产亚洲aⅴ| 一区二区欧美日韩视频| 国产高清视频一区三区| 日韩成人在线观看| 精品久久久久久久中文字幕| 亚洲一级片在线看| 久久久精品免费| 国产精品视频一区二区高潮| 91九色视频导航| 亚洲老头同性xxxxx| 亚洲毛片在线观看.| 国产999精品视频| 国产盗摄xxxx视频xxx69| 8090成年在线看片午夜| 日韩专区在线播放| 97av在线播放| 久久久久久国产精品三级玉女聊斋| 亚洲电影免费在线观看| 日韩激情av在线播放| 九九热精品在线| 国产激情久久久久| 国产精品女主播视频| 国产亚洲欧美视频| 亚洲日本成人网| 亚洲精品成人久久| 欧美激情国内偷拍| 日韩在线观看电影| 色妞欧美日韩在线| 亚洲新中文字幕| 国产精品极品美女粉嫩高清在线| 国产成人精品久久| 亚洲欧洲一区二区三区在线观看| 在线观看国产成人av片| 超碰日本道色综合久久综合| 日韩av123| 一区二区三区视频在线| 久久福利视频导航| 国产精品一区二区三区毛片淫片| 国产伦精品免费视频| 久久久亚洲国产天美传媒修理工| 欧美高清视频在线| 这里只有精品在线观看| 夜色77av精品影院| 日本久久久久亚洲中字幕| 日韩二区三区在线| 国模叶桐国产精品一区| 亚洲美女在线看| 国产热re99久久6国产精品| 欧美中文字幕精品| 国产精品嫩草影院一区二区|