The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как создать индексную переменную в цикле?"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Как создать индексную переменную в цикле?"  +/
Сообщение от rusya_rr (ok) on 09-Окт-12, 18:37 
напр.
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. Кстати,необязательно цикл. Как создать и обратиться к переменной и ее значению, частью имени которой являлась бы другая переменная?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как создать индексную переменную в цикле?"  +2 +/
Сообщение от meantraitor on 09-Окт-12, 20:02 
eval "var$counter=whatever"
eval "echo \\\$var$counter = \$var$counter"
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Как создать индексную переменную в цикле?"  +/
Сообщение от rusya_rr (ok) on 09-Окт-12, 21:40 
> eval "var$counter=whatever"
> eval "echo \\\$var$counter = \$var$counter"

Это то, что надо.
Спасибо тебе, знающий незнакомец.


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Как создать индексную переменную в цикле?"  +/
Сообщение от Mimicus Pipicus Onanizmus on 10-Окт-12, 11:33 
>> eval "var$counter=whatever"
>> eval "echo \\\$var$counter = \$var$counter"
> Это то, что надо.
> Спасибо тебе, знающий незнакомец.

$var = "var";
$obj = $var."сахар";
$$obj = whatever;


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Как создать индексную переменную в цикле?"  +/
Сообщение от rusya_rr (ok) on 10-Окт-12, 13:28 

> $var = "var";
> $obj = $var."сахар";
> $$obj = whatever;

Теоретические изыскания вроде не в этом форуме :)
и btw - $$ - pid текущего шелла.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Как создать индексную переменную в цикле?"  +/
Сообщение от Andrey Mitrofanov on 11-Окт-12, 09:35 
> $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
$ _

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "Как создать индексную переменную в цикле?"  +/
Сообщение от Andrey Mitrofanov on 11-Окт-12, 10:02 
> $ 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

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру