ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# [数组][2] 内存中一段连续的空间,用来存储数据。 ## 声明数组的常用语法 ~~~ declare -a ARY ARY=(1 2 3) ARY=("a" "b" "c") ~~~ ## 向数组中添加成员 ``` ARR[1]="item_1" ARR[2]="item_2" 或者 ARR+=("item_1") ARR+=("item_2") ``` ## ``` ${ARR[2]} # 获取元素 ${ARR[@]:0:1} # 切片 ${#ARR[@]} # 获取数组长度 ${#ARR} # 获取数组长度 ``` ## 判断一个指定的字符串是否在该数组中 ``` if echo "${ARR[@]}" | grep -w "item_1" &>/dev/null; then echo "Found" fi ``` ## 遍历 ~~~ for i in ${a[@]}; do cmd done ~~~ # 关联数组 ## **定义和初始化关联数组**    **关联数组初始化赋值方式1** 这种情况必须先声明再初始化,例如: ```       declare -A mydict    #声明       mydict["name"]=guess       mydict["old"]=18       mydict["favourite"]=coconut ```  **关联数组初始化赋值方式2:** 以索引数组格式定义,只不过元素变成了键值对,这种方式不需要先声明,例如: ``` mydict=(["name"]=guess ["old"]=18 ["favourite"]=coconut ["my description"]="I am a student") ``` ## **关联数组的引用** 引用某个元素时,和普通数组的区别:只是索引为键而已 ``` echo ${mydict["name"]},输出为guess ``` 引用整个关联数组时,和普通数组的引用完全一样 ``` echo ${mydict[@]} 或 echo ${mydict[*]} ``` ## 关联数组的操作 ``` # 获取关联数组长度(元素的个数) echo ${#mydict[@]} # 关联数组元素值的替换 echo ${mydict[@]/guess/xiaoli} # 关联数组的删除 unset mydict # 获取关联数组索引列表 ${!关联数组名[@]} ``` [1]:http://blog.csdn.net/augusdi/article/details/44856207 [2]:https://www.codelast.com/tag/%E5%88%A4%E6%96%AD%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%98%AF%E5%90%A6%E5%9C%A8shell%E6%95%B0%E7%BB%84%E4%B8%AD/