2015-11-29 3 views
-1

Я видел этот вопрос, заданный раньше, но я не могу понять его.Использование переменной значения как имя переменной в bash

У меня есть этот переменный, которую я получаю от пользовательского ввода read column_number

, а затем я присоединиться к нему с префиксом «Col», чтобы сформировать имя моего переменного

selected_column="col"$column_number 

Но когда я пытаюсь оценить его, чтобы получить результат, я продолжаю получать (standard_in) 1: ошибка синтаксиса

sum=$(round $sum+"echo ${!selected_column}", 2) 

full code:

ответ

2
column_number=5 
selected_column=col$column_number 
col5=42 
sum=17 
echo $(($sum+${!selected_column})) 

Выход: {!} Selected_column

 
59 

sum=$(round $(($sum+${!selected_column})) 2) 
+0

Пожалуйста, вы можете дать объяснение '$' Это функция расширения история, которую мы используем здесь? – sjsam

+2

@sjsam 'man bash' then'/indirection' – gboffi

+0

@sjsam: From 'man bash': * * Если первый символ параметра является восклицательным знаком (!), Вводится уровень переменной-косвенности. Bash использует значение переменной, сформированной из остальной части параметра, как имя переменной, затем эта переменная расширяется и , что значение используется в остальной части замещения, а не как значение самого параметра. Это называется косвенным расширением . * " – Cyrus

Смежные вопросы