通过eval我们可以创建一个类似于数组的, 相同前缀的变量序列, 变相达到模拟数组的目的:
一个例子:
取数组元素的函数:
- get_value() {
- newname=${1}${2}
- eval "echo $`echo $newname`"
- }
如果我们做以下操作:
- pref=var
-
- indx=1
- eval "$pref$indx=110"
- val=`get_value $pref $indx`
-
- indx=2
- eval "$pref$indx=2110"
- val=`get_value $pref $indx`
-
- indx=3
- eval "$pref$indx=31110"
- val=`get_value $pref $indx`
于是我们就得到了以下输出:
- 110
- 2110
- 31110
取值时,我们也没有提供具体的变量名, 而只是提供变量序列的前缀和序号. get_value自动将其组装为变量名, 并且取出变量值. 就如同我们只提供数组名和下标就取出值一样.
该模拟方式可以用在需要跨shell的脚本中.