LINUX.ORG.RU

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

 


0

1

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

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

variable='value'

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

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

★★★★

Последнее исправление: piyavking (всего исправлений: 1)

variable='value'

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

variable='$value'

?

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

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

FRCTLL
()

тебе нужен 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 ★★★★
() автор топика
Ответ на: комментарий от 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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.