數組、變量及bash的配置
變量:存儲單個元素的內存空間
數組:存儲多個元素的內存空間,相當于多個變量集合
索引:編號從0開始,屬于數值索引,索引為自定義格式即為關聯數組(bash4.0之后支持) bash數組支持稀疏格式
數組的聲明
普通數組declare –a
關聯數組 declare –A
普通數組可以不聲明直接使用,關聯數組必須先聲明再使用
數組的賦值:(arr代表數組)
1一次只賦一個值 arr[n]=
2一次賦全部值arr=(n1 n2 n3…..)支持arr=({n1…n2})格式
3只賦值特定元素arr=(a[n1]= a[n2]= …..)
4交互式賦值 read –a arr
引用數組元素: ${arr[n]}省略n時代表下標為0的
數組長度(數組元素個數): ${}#arr[@|*]}
數組中所有元素${arr[@]}或${arr[*]}
數組切片${arr[*]:offset:number}
offset:要跳過的元素個數
number:取出的元素個數
向數組中追加元素arr[${#arr[*]}]
刪除數組中元素:unset arr[n]
字符串切片(var代表變量)
${#var}:顯示變量的字符長度
${var:offset:number}
offset:要跳過的字符個數
number:取出的字符個數
${var: -#}:從右向左計算取出#個字符
${var:#1: -#}:跳過前#1個字符,取到倒數#2個字符之前
基于模式取子串
${變量#*字符}:從左向右找到變量所存儲字符串第一次匹配到的字符串,刪除匹配到的字符串左側包括匹配到字符串本身的字符
${變量##*字符}:從左向右找到變量所存儲字符串最后一次匹配到的字符串,刪除匹配到的字符串左側包括匹配到字符串本身的字符
${變量 %*字符}:從右向左找到變量所存儲字符串第一次匹配到的字符串,刪除匹配到的字符串右側包括匹配到字符串本身的字符
${變量 %%*字符}:從右向左找到變量所存儲字符串最后一次匹配到的字符串,刪除匹配到的字符串右側包括匹配到字符串本身的字符
字符串的查找替換
${變量/要替換的/替換為}:替換第一個找到的字符串
${變量//要替換的/替換為}:替換所有找到的字符串
${變量/#要替換的/替換為}:只替換在行首匹配到的字符串
${變量/%要替換的/替換為}:只替換在行首匹配到的字符串
${變量^^}:將變量中所有字母轉化為大寫
${變量,,}:將變量中所有字母轉化為小寫
${變量:-value}:若變量為空或未設置則返回value值,否則返回變量值
${變量:+value}:若變量為空或未設置則返回空,否則返回value值
${變量:=value}:若變量為空或未設置則返回value值并將value值賦給變量,否則返回變量值
${變量:?error}:若變量為空或未設置則返回錯誤信息,否則返回變量值
declare:定義數組,變量
-r:定義只讀變量
-i:定義整形變量
-a:定義數組
-A:定義關聯數組
-f:查看當前shell定義的所有函數
-F:查看當前shell定義的所有函數名
-x:定義環境變量
-l:將變量內容轉化為大寫
-u:將變量內容轉化為小寫
typeset=declare
變量的間接引用
eval #=\$$變量
#=${!變量}
eval會對變量進行兩次掃描,會首先掃描命令行進行所有的置換再運行命令
mktemp:創建臨時文件,文件名后綴為3個以上XXX
-d:創建臨時目錄
install:復制
-d:創建空目錄
-m:指定復制后文件權限
-o:指定復制后文件所有者
-g:指定復制后文件所屬組
bash的配置文件
全局:/etc/profile /etc/profile.d/*.sh /etc/bashrc
個人:~/.bash_profile ~/.bashrc
登錄分為交互式登錄和非交互式登錄
交互式登錄:直接通過終端登錄,使用su –切換
非交互式登錄:圖形界面下打開的終端,su切換,腳本
交互式登錄訪問配置文件順序:/etc/profile /etc/profile.d/*.sh ~/.bash_profile ~/.bashrc /etc/bashrc
非交互式登錄訪問配置文件順序:~/.bashrc /etc/bashrc /etc/profile.d/*.sh
profile類配置文件一般存放環境變量,命令或腳本
bashrc類配置文件一般存放本地變量,別名,函數
修改配置文件后要用.或source命令使配置生效
.bash_logout:退出時的腳本
原創文章,作者:zzzzz1357x1,如若轉載,請注明出處:http://www.www58058.com/40276
文章對各知識點進行了完整的概述,不過在思路上可以盡量詳細點,郵資機的思路,而不是僅僅羅列知識點,讓他們能能順暢出的串起來成為一篇優秀的博客。