2014-10-06 2 views
0

Я ищу способ добавить строку к имени переменной в bash и оценить ее как новую переменную. Пример:Изменение переменной Variable в Bash

#!/bin/bash 
file="filename" 
declare ${file}_info="about a file" 
declare ${file}_status="status of file" 
declare ${file}_number="29083451" 

echo ${${file}_info} # <-- This fails with error: "bad substitution" 

Есть ли способ сделать это?

Я на самом деле не реализую этот в любом производственном коде в любом месте. Я просто хочу знать, есть ли способ создать имя переменной, используя переменную и строку. Это казалось интересной проблемой.

Также обратите внимание, что я не, спрашивающий о косвенности bash, которая является использованием ${!x} для оценки содержимого переменной как переменной.

+0

Похоже Eval подхода приведены в http://stackoverflow.com/questions/8435256/use-string-as -variable-name-in-bash-script может быть тем, который вы ищете. – jpe

+1

Часто задаваемые вопросы об обращении указывают, как писать, а не только, как читать, поэтому на самом деле это одна и та же тема. –

+0

Согласовано. Поскольку я рассмотрел комментарии и ответы, казалось бы, в решении должно быть задействовано косвенное отношение. Я надеялся на другой путь, но кажется, что существует хотя бы одно решение, если косвенное использование используется в этом процессе. – vastlysuperiorman

ответ

0

Вы не спрашиваете о косвенности, но это то, что может помочь вам:

info=$file\_info 
echo ${!info} 
+0

По-видимому, мое редактирование было отклонено. Кажется, что ваш ответ должен сказать '$ {! Info}' вместо '$ {! Name}'. Я также надеялся достичь этого, не используя переменную-заполнителя, такую ​​как «информация», которую вы используете здесь, но вы действительно решили проблему. Примите ваш ответ. – vastlysuperiorman