напр.
cat ./test#! /bin/bash
for counter in "соль сахар кофе мёд"; do
echo $counter
var.$counter= "whatever"echo " $(var.$counter) = $var.$counter " # Понятно, что чушь, но просто для представления
doneХочу, чтоб было:
соль
varсоль=whatever
сахар
varсахар=whatever
кофе
varкофе=whatever
мёд
varмёд=whateverГрубо, хочу работать в цикле с переменной, частью имени которой являлось бы значение счетчика на данной итерации цикла. bash говорит: varкофе - not found. Помогите, ум кипит.
PS. Кстати,необязательно цикл. Как создать и обратиться к переменной и ее значению, частью имени которой являлась бы другая переменная?
eval "var$counter=whatever"
eval "echo \\\$var$counter = \$var$counter"
> eval "var$counter=whatever"
> eval "echo \\\$var$counter = \$var$counter"Это то, что надо.
Спасибо тебе, знающий незнакомец.
>> eval "var$counter=whatever"
>> eval "echo \\\$var$counter = \$var$counter"
> Это то, что надо.
> Спасибо тебе, знающий незнакомец.$var = "var";
$obj = $var."сахар";
$$obj = whatever;
> $var = "var";
> $obj = $var."сахар";
> $$obj = whatever;Теоретические изыскания вроде не в этом форуме :)
и btw - $$ - pid текущего шелла.
> $var = "var";
> $obj = $var."сахар";
> $$obj = whatever;Там ввирху BASH, а не этот вашшшь PERL.
$ i=1
$ j=0; ref=var$i; eval var$i=$(((j+1)*i)); echo $i ${!ref}; let i++
1 1
$ j=${!ref}; ref=var$i; eval var$i=$(((j+1)*i)); echo $i ${!ref}; let i++
2 4
$ j=${!ref}; ref=var$i; eval var$i=$(((j+1)*i)); echo $i ${!ref}; let i++
3 15
$ j=${!ref}; ref=var$i; eval var$i=$(((j+1)*i)); echo $i ${!ref}; let i++
4 64
$ _
> $ j=${!ref}; ref=var$i; eval var$i=$(((j+1)*i)); echo $i ${!ref}; let i++
> 4 64+
$ echo $var1 $var2 $var3 $var4 $var5 $var6
1 4 15 64 325 1956