shell腳本之數組


數組與字符串:
數組
數組說白了就是一段連續的變量,一段連續的內存存儲空間
解決:變量過多的問題;在同一變量中,我們不需要去定義多個名字,而是以數組的方式來定義;(列表)
共好學院雲三班【1】=王鑫
1、數組名
2、索引
3、數值

如何定義數組:
declare -i 整數
declare -a 定義數組
declare -A 定義嵌套的數組
共好雲班【1】=雲計算專業
雲計算專業【1】=雲三班
雲三班【1】=王鑫
array=1 正數型
如何給數組賦值:
array()=0
1、array【0】=王鑫(在計算機語言中,索引一般從零開始)
(注意:索引並不一定是數字:key-value array)
(shell中數組賦值可以跳躍,)
2、array=(/var/log/*.log)
做遍歷
array=(a,b,e,d,)
3、array=('王鑫=165' ‘於小倩=140’)
4、通過read命令賦值
read -t 【延時】-p "指定說明"
read -a 輸入數組所需的變量值
read -a a b c d e
如何調用數組:
${數組名}
${數組名【索引】}
${數組名}默認調用數組名名為0
${數組名【*】}或者${數組名【@】}調用數組所有的名
1、調用數組的數組長度
length("變量")
${#變量名【*】}或者${#變量名【@】}
2、添加數組的特殊方式
${變量名【${變量名【@】}】}=“值”或者${變量名[#變量名[*]]}=“值”
關於數組的操作
數組切片
${變量名【@】:偏移量:所需要取出值的個數}
${a[*]:2:4}
${變量名[@]:偏移量}
刪除值
unset ${變量名【索引】}
注意:刪除是索引所對的值,而沒有帶着索引一塊刪除
修改值
a[3]=c
a[3]=d 覆蓋及修改

字符串:
printf
name=張卓
height=183CM
python (%s,她的身高為%d)% (name,height)
輸出:張卓,身高為183CM
占位符
%s
%d
%f
%[num]s 知道該字符串占位的寬度
%-[num]s 代表坐對齊
[居中對齊]
1、字符串切片:
數組切片:${變量名【@】:偏移量:數值個數}
字符串:${變量名:偏移量:數值個數}
${變量名:-數值個數}【注意:冒號后面一定要加空格*】
${變量名:-Word}默認賦值的意思
read "sasasa:" test
[-z $test]&&test=aabbccdd
2、基於模式取子字符串:
${變量名#pattern} 刪除pattern 第一次匹配到的字串
${變量名##pattern}刪除所有pattern匹配的字符串
從左自右
${變量名%pattern}
${變量名%%pattern}
3、字符替換
${變量名/pattern/替換后的字符串}【pattern並不是正則表達式而是文件通配符】
匹配第一個pattern,來進行替換
${變量名//pattern/替換后的字符串}
匹配所有哦pattern,並進行替換
${變量名/#pattern 替換后的字符串}
指定匹配行首必須是pattern,才會替換
${變量名/%pattern 替換后的字符串}
指定匹配行尾必須是pattern,才會替換
注意:/ 分隔符 ,不能替換為(# % 等特殊字符,和sed不一樣)
4、查找並刪除
替換中,不指定替換字符串,即為刪除
${變量名/pattern}
${變量名//pattern}
${變量名/#pattern}
${變量名/%pattern}

5、替換大小寫
tr 替換大小寫
tr [[:lower:]][[:upper:]]<filename
${變量名^^} 將字符串全部替換為大寫
${變量名,,} 將字符串全部替換為小寫
6、變量賦值
變量名1=${變量名:-Word} 注意沒有空格! 輸入默認值的作用,變量2沒有值,就將Word默認值賦值給變量1
變量名2=${變量名:+Word} 不常用 變量2有值的情況下,才將Word默認值給變量1
${變量2:=Word}如何變量沒有賦值,就將Word賦值給變量,有值,則使用原來的值。
變量1=${變量2:?error_infor}如果變量沒有賦值,輸出error_info錯誤信息
不知道如何使用?
7、二個命令
mktemp 創建臨時文件以及目錄 temp -- /temp
避免大家取的文件名重復;Mktemp 。名字.XXXXXX(XXXX代表隨機數)
默認創建是隨機的文件
-d 創建的就是隨機的
install 復制或刪除文件。用法同copy
優點可以指定權限來復制文件
用法:install a 文件 b 目錄2 //復制a文件到b目錄,並回復初始權限
-t原目對換
-d刪除
-m MODE
-o OWNER
-d GROUP

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM