shell 二維陣列的實現

2021-10-22 05:58:34 字數 1355 閱讀 7008

前言

bash預設不支援二維陣列,如果我們想實現map 資料結構,可以安裝如下的方式來進行構造

預備知識

eval:  它是shell內建命令,用於字串的解析。它會首先掃瞄命令列然後進所有的置換,最終再執行該命令。

示例:

#!/bin/bash

# 1. 宣告 arr 是乙個陣列,它裡面的值由三個表示式組成

echo "配置資料匯入"

arr=(

"prt0=('/var/log/access-2021-03-12.log' 'awk \"\$3 == 200\"' 'janet' '1' '0' '304' '3' '1')"

"prt1=('/var/log/access-2021-03-13.log' 'awk \"\$3 == 200\"' 'janet' '1' '0' '304' '3' '1')"

"prt2=('/var/log/access-2021-03-15.log' 'awk \"\$3 == 200\"' 'janet' '1' '0' '304' '3' '1')"

)# 2. 遍歷 arr 中所有變數的值(也就是獲取所有的表示式),然後用 eval 進行解析

for prt in "$"

do eval $

# 列印出整個陣列的值

echo $

done

# 3. 使用解析後的資料

echo $

echo $

echo $

echo $

echo $

echo "陣列長度------------------"$

配置資料匯入

prt0=('/var/log/access-2021-03-12.log' 'awk "$3 == 200"' 'janet' '1' '0' '304' '3' '1')

prt1=('/var/log/access-2021-03-13.log' 'awk "$3 == 200"' 'janet' '1' '0' '304' '3' '1')

prt2=('/var/log/access-2021-03-15.log' 'awk "$3 == 200"' 'janet' '1' '0' '304' '3' '1')

/var/log/access-2021-03-13.log

awk "$3 == 200"

janet10

陣列長度------------------3

說明:

$ :表示獲取陣列的所有值

$ :表示獲取陣列的長度

C vector 實現二維陣列

簡介 在stl中vector這一容器,無論是在封裝程度還是記憶體管理等方面都由於傳統c 中的陣列。本文主要是關於使用vector初始化 遍歷方面的內容。其他二維的思想也是類似的。這裡簡單敘述一下c 構建二維動態陣列 int p p new int 10 注意,int 10 表示乙個有10個元素的指標...

vector實現二維陣列

用vector實現二維陣列的好處 1 陣列的越界可能會引起程式的崩潰,動態性不好,包括動態改變大小,動態申請。2 vector提供了operator函式,可以像陣列一樣的操作,而且還有邊界檢查,動態改變大小。簡單說下c 構建動態的二維陣列 int p p new int 10 注意,int 10 表...

C vector 實現二維陣列

簡介 在stl中vector這一容器,無論是在封裝程度還是記憶體管理等方面都由於傳統c 中的陣列。本文主要是關於使用vector初始化 遍歷方面的內容。其他二維的思想也是類似的。這裡簡單敘述一下c 構建二維動態陣列 int p p new int 10 注意,int 10 表示乙個有10個元素的指標...