LINUX.ORG.RU

Переменная в качестве имени переменной

 


0

1

Здравствуй, ЛОР, спасибо, что отвечаешь мне на дурацкие вопросы. Сегодня я, по-моему, умудрился вылепить нечто особенное, а именно:

Возникла нужда определить имя переменной через значение другой переменной, то есть в скрипте есть строка:

variable='value'

и мне теперь нужно определить переменную $value, используя $variable. Излагаю немного сумбурно, но в процессе обсуждения, думаю, ситуация прояснится.

Спасибо за внимание.

variable='value'

Разве не так надо:

variable='$value'

?

мне теперь нужно определить переменную $value, используя $variable

Т.е. тебе нужно использовать variable на манер сишного указателя? Я не гуру баша, но такое вряд ли возможно.

FRCTLL ()
Ответ на: комментарий от FRCTLL

вряд ли возможно

annelin@somewhere ~ $ var=somevar
annelin@somewhere ~ $ somevar=12348
annelin@somewhere ~ $ echo ${!var}
12348
snoopcat ★★★★★ ()
Ответ на: комментарий от snoopcat

У ТСа не var=somevar, а наоборот, так что твой финт не сработает.

FRCTLL ()
Ответ на: комментарий от FRCTLL

так что-ли?

annelin@somewhere ~ $ variable=value
annelin@somewhere ~ $ let $variable=123
annelin@somewhere ~ $ echo $value
123

snoopcat ★★★★★ ()

тебе нужен eval:

del@del-lmde:~$ name=megavar
del@del-lmde:~$ eval $name=megaval
del@del-lmde:~$ echo $megavar 
megaval

И да, eval - зло.

DELIRIUM ☆☆☆☆☆ ()
Ответ на: комментарий от snoopcat

Вот ещё бы одну деталь впихнуть, и было бы счастье:

не let $variable=123, а что-то вроде exp='123';let $variable=$exp. Ну, я, естественно, нерабочую ересь написал, но ход мысли постарался донести: в правую часть оператора присваивания надо поставить не константу, а переменную.

piyavking ★★★ ()
Ответ на: комментарий от piyavking

надо поставить не константу, а переменную.

Кто-то мешает?

sdio ★★★★★ ()
Ответ на: комментарий от sdio
piyavking@piyavking-desktop:~/.conky$ variable=value
piyavking@piyavking-desktop:~/.conky$ i=cxbdg
piyavking@piyavking-desktop:~/.conky$ let $variable=$i
piyavking@piyavking-desktop:~/.conky$ echo $value
0
piyavking ★★★ ()

Тебе нужно ${variable[1]}=value. /thread

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.