在Bash中,二维数组的复杂实现

・1 分钟阅读

Bash中二维数组的复杂实现,

arr[i*100+j]="whatever"
因为Bash不支持二维数组,所以,可以将列的长度限制为足够大的常量值(在本例中为100 ),然后用i和j对数组进行索引,或者编写自己的get ()和set ()方法来对数组进行索引,就像我实现的那样(参见Sample输出),例如,对于i0和j0... 99,你将在一维数组的0,99范围内选取100个元素中的一个,对于i=1和j=0,99你将获取[100 ,199]范围内的100个元素之一,
示例输出
rany:~$ # READ DESCRIPTION FIRST.
rany:~$ set() { i="$1";j="$2";val="$3";arr[$((i*100+j))]="$val"; }
rany:~$ set 0 0"hello"
rany:~$ set 0 1"world"
rany:~$ set 0 99"how"
rany:~$ set 1 0"are"
rany:~$ set 1 99"you?"
rany:~$ echo"${arr[0]} ${arr[1]} ${arr[99]} ${arr[100]} ${arr[199]}"
hello world how are you?
rany:~$ get() { i="$1";j="$2"; echo"${arr[$((i*100+j))]}"; }
rany:~$ get 0 99
how
rany:~$ get 1 0
are
rany:~$ get 1 99
you?
rany:~$
Hujiuxiang profile image