本篇博客介紹的是shell中數組與正則表達式的做用以及它們的用法 . 每門語言都有屬組與正則表示 , shell也不例外 , 首先咱們來看看數組的做用和用法 :正則表達式
一 . 數組shell
數組 , 由名而意就是一組數字 . 當須要賦值100個變量的時候 , 就要定義100個變量名並賦值給它們 , 而用數組的話使用一個名稱就能夠了 , 在數組後跟100個值 , 訪問數組的時候須要使用下標的方式 .vim
1 . 數組的聲明數組
declare -a 數組名 #聲明數組爲數組類型bash
declare -i 變量名 #聲明變量爲整數數字類型ide
declare -x 變量名 #聲明變量爲環境變量spa
declare -i 變量名 #聲明變量爲readonly類型 , 只讀類型 , 變量的內容不可改blog
2 . 定義數組(變量值稱爲數組的元數)博客
方法一 : 一次賦一個值 格式: 數組名[下標]=值it
array[0]=1
array[1]=2
array[2]=3
方法二 : 一次賦多個值 格式: array=(值1 值2 值3 ..)
array=(1 2 3 4 ..)
取消數組 : unset 數組名
3.訪問數組
echo ${array[0]} #訪問數組中的第一個元數
echo ${attay[*]} 或 echo ${array[@]} #訪問數組中的全部元數 , 數組的遍歷 ,
echo ${#attay[*]} 或 echo ${#array[@]} #訪問數組中的全部元數 , 數組的遍歷
echo ${array[@]:1} #從數組的下標1開始訪問
echo ${array[0]:1:2} #從數組的下標1開始 , 訪問2個元數
實例 : 定義一個名爲array的數組 , 數組的成員有 1 2 3 4 5
用數組寫一個shell腳本 , 例如查看水果價格:
要求 : 輸入蘋果 , 顯示蘋果5元一斤 , 輸入香蕉 , 顯示3元一斤 , 輸入橘子 , 顯示3元一斤 ; 若是輸入的不是這三種水果 , 就提示只能查詢蘋果 , 香蕉 , 橘子
vim /cai.sh #編輯一個名爲cai的腳本 , 內容以下
保存退出 , 使用 bash /cai.sh 命令來運行腳本 , 結果爲 :
這只是一個很是簡單的腳本 , 還能夠在腳本中加入while 讓用戶一直輸入查尋水果名
二 . 正則表達式
正則表達式 : 真確的規則表達式 , 是用來作關鍵字匹配的 , 它是一種字符模式 , 是在匹配文本時使用一些特殊的符號來匹配用戶想要的東西 , 相似於bash來匹配文本
正則表達式與通配符的區別爲 :應用的場合不一樣
通配符 : 是用在查找文件名時*或?或[關鍵字]來匹配文件名中不肯定達到字符 , ls /dev/tty[135]?
正則表達式 : 是用在查看文件內容時 ^ , $ , + , * , ? , [] ,等符號來匹配文件內容中不肯定的字符
可以使用正則表達式的命令 : vim , grep , sed , awk
基本正則表達式元字符
1 . 字符的匹配
元字符 | 功能 | 例子 | 匹配結.果 |
. | 匹配任意單個字符 | /l.ve | love , live .. |
[] | 匹配一組字符中的任意一個 | /l[Oo]ve/ | love , lOve |
[^] |
表示取反 | /[^a-d]ove/ |
匹配除了aove , bove , cove , dove 以外的全部 |
2 . 次數的匹配
元字符 | 功能 | 例子 | 匹配結.果 |
* | 匹配*號左邊的全部字符 | /l*ve/ | lve , llve ,l//llve.. |
x\{m\} | x(字符), m(數字),匹配xx出現m次 |
/a\{3\}/ | aaa |
x\{m,\} | 匹配x出現至少m次 | /a\{2,\}/ |
aa , aaa ,aaaa , ..... |
x\{m,n\} | 匹配x出現m次到n次 | /a\{2,4\}/ | aa , aaa ,aaaa |
3 . 位置的定位
元字符 | 功能 | 例子 | 匹配結.果 |
^ | 行首定位符 | /^root/ | 匹配以root開頭的行 |
$ | 行尾定位符 | /bash$/ | 匹配以bash結尾的行 |
\< | 詞首定位符 | /\<love/ |
匹配lovely , lover , lovexx .. |
\> | 詞尾定位符 | /love\>/ | 匹配以love結尾的 , 如xxlove |
\ | 轉義符號 | /2\.5 | 匹配結果爲2.5 |