1、數組linux
一、 是一段連續的變量,一段連續的內存存儲空間正則表達式
二、 解決了變量過多的問題;在同一類變量中,咱們不須要去定義多個名字,二十以數組的方式來定義;(列表)shell
(1) 數組值vim
(2) 索引數組
(3) 值bash
三、 如何定義數組:ui
(1)declare -i 定義整數(申明)索引
(2)declare -a 定義數組array內存
(3)declare -A 定義數組嵌套字符串
a[1]=b
b[1]=c
c[1]=d
【這樣的數組值,在bash中不經常使用】
四、 如何給數組賦值
array=()
一、 array[0]=zz (在計算機語言中,索引通常從0開始計算)
(索引並不必定是數字:key-value array[zz]=1.87m)
(shell中數組賦值,能夠跳躍(條約賦值))
二、 array=(/var/log/*.log)
作遍歷
array=(a b c d e)
三、 array=(‘zz=187’ ‘aaa=186’)
四、 經過read命令來賦值
(1)read -t 延遲 -p 「指定說明」 -a 輸入數組所需的變量值
(2)read -a a b c d e
五、 如何去調用數組:
$[變量名]
${數組名[索引]} 定義的是哪一個索引你,就看到是對應索引指定的值
${數組名} 默認調用 索引=0 的值
${數組名[*]}或者 ${數組名[@]}調用數組內全部的值
(1)調用數組的數組長度
length(「變量」)
${#變量名[*]}或者 ${#變量名[@]}
(2)添加數組值的特殊方式
${變量名[${#變量名[@]}]}=「值」 或者 ${變量名[${#變量名[*]}]}=值
(3)關於數組的其餘操做
數組切片
${變量名[@]:偏移量:所須要取出值的個數}
echo ${a[*]:2:4}
${變量名[@]:偏移量}
刪除值
unset ${變量名[索引]}
注意:刪除是索引所對的值,而沒有帶着索引一塊刪除;
【知道值,如何查看索引?】
修改值
A[3]=c
A[3]=d 覆蓋即修改
2、字符串
一、 字符串切片:
數組切片:${變量名[@]:偏移量:數值個數}
字符串切片: ${變量名:偏移量:數值個數}
${變量名:-數值個數} 【*注意:冒號後面必定要加空格*】
${變量名:-word} 默認賦值的意思
二、 基於模式取子字符串
(1)從左到右
${變量名#pattern} 刪除pattern第一次匹配到的字串
${變量名##pattern} 刪除全部pattern匹配到的字串
(2)從右向左
${變量名%pattern} 刪除pattern第一次匹配到的字串
${變量名%%pattern} 刪除全部pattern匹配到的字串
三、 字符替換
(1)${變量名/pattern/替換後的字符串}
匹配第一個pattern,來進行替換 【pattern並非正則表達式,而是文件通配符】
(2)${變量名//pattern/替換後的字符串}
匹配全部的pattern,並進行替換
(3)${變量名/#pattern/替換後的字符串}
指定匹配行首必須是pattern,纔會替換
(4)${變量名/%pattern/替換後的字符串}
指定匹配行尾必須是pattern,才能替換
注意:/ 分隔符,不能替換爲(#%等特殊字符,和sed不同)
四、 查找並刪除
替換中,不指定替換字符串,即爲刪除
${變量名/pattern}
${變量名//pattern}
${變量名/#pattern}
${變量名/%pattern}
五、 替換大小寫
(1)tr 替換大小寫
tr [[:lower:]] [[:upper:]] < filename
(2)${變量名^^} 將字符串所有替換爲大寫
(3)${變量名,,} 將字符串所有替換爲小寫
六、 變量賦值
變量1=${變量名2:-word} 注意沒有空格! 輸入默認值的做用
變量1=${變量名2:+word} 不經常使用 變量2有值的狀況下,纔將word默認值賦值給變量1
七、腳本應用其餘文件中的變量,如何實現? filename1 vim filename1 a=1 b=2 :wq vim filename1.sh . /全路徑/filename 後者 source /全路徑/filename //執行整個代碼 c=$[$a+$b] ehco $c :wq bash filename1.sh 練習:修改hostname,定義一個 hostname文件 name=xxx ,hostname.sh八、兩個命令 mktemp 建立臨時文件以及目錄 temp -- /tmp 避免你們取的文件名字重複;mktemp 名字.XXXXXX (XX表明隨機數(字母和數字)) 默認建立是隨機的文件 -d 建立的就是隨機的 目錄 file=`mktemp a.XXXX` install 複製或刪除文件,用法同copy 優勢:能夠指定權限來複制文件 用法:intall a文件 b目錄 //複製a文件到b目錄,並回復初始權限(文件:755 目錄:644) -t 源目對換 -d 建立 -m MODE -o OWNER -g GROUP九、練習:(1)獲取此命令所依賴的全部庫文件的列表(2)複製命令至某目標目錄(例如/mnt/sysroot)下的對應路徑下(3)複製此命令所依賴的全部庫文件至目標目錄下的對應路徑下/lib64/ld-linux-x86-64.so.2 /mnt/sysroot/lib64/ld-linux-x86-64.so.2每次複製完成一個命令後,不要退出,而是提示用戶輸入新的複製的命令,並重復完成上述功能,直到用戶輸入quit退出;