在Bash中,二维数组的复杂实现
Hujiuxiang
・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:~$