Ну, у bash есть массивы, см. man bash
. Общей оболочки posix нет.
Однако оболочка не является точно макропроцессором, поэтому любое метапрограммирование должно обрабатываться с помощью eval
или, в bash, с синтаксисом ${!variable}
. То есть в макропроцессоре, таком как nroff, вы можете легко подделать массивы, создав переменные с именами a1, a2, a3, a4 и т. Д.
Вы можете сделать это в оболочке posix, но для этого требуется много eval или эквивалента, например $(($a))
.
$ i=1 j=2; eval a$i=12 a$j=34
$ for i in 1 2; do echo $((a$i)); done
12
34
$
А для примера, относящегося к bash ...
$ a=(56 78)
$ echo ${a[0]}
56
$ echo ${a[1]}
78
$