LINUX.ORG.RU

Переменная в переменной

 ,


0

1

Добрый день, уважаемые форумчане!

помогите, пожалуйста, со следующей проблемой есть код

for name_server in (server1 server2)
do
eval status_$name_server=`ps -ef | grep $name_server`
echo ${status_$name_server}
done



выдает ошибку - bad substitution
конструктор ${status_${name_server}} 
тоже выдает ошибку

в чем проблема?

Дело в том, что так на баше не пишут. Вообще eval лучше не злоупотреблять

Yur4eg ★★
()
for name_server in (server1 server2)
do
        status="status_$name_server"
        echo "${name_server} status var: ${status}"
        eval "${status}='`ps -ef | grep $name_server`'"
        echo ${!status}
done

А вот так чтоб без костыля в виде «status» то наверное никак, если нужно часто пользоватся то можно свою функцию написать для извлечения значения, за одно можно функцию написать для установки значения (или через declare) и выкинуть стремный eval

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

zaz, спасибо за ответ

дело в том, что мне нужны именно переменные

status_server1 и status_server2

что бы их использовать дальше в коде

MrCovax
() автор топика
$ name_server=server1
$ eval status_$name_server=online
$ eval echo \$status_$name_server
online
$ eval tmp=\$status_$name_server
$ echo $tmp
online
joy4eg ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.