2016-06-13 4 views
0

Мне нужно сделать переменную, используя два других значения переменных.создание переменной со значениями другой переменной в сценариях unix shell

#i have two variable in unix i.e.# 
v_a=a 
v_b=b 
##now i want to combine the two values of the two variable and the result of that i want that as a variable means v_a_b and use it.## 
echo 'v_'$v_a'_'$v_b #the output will be v_a_b and i want to use it like $v_a_b 
+0

$ v_a_b - это переменная, которую я хочу использовать далее в своем коде. –

+0

Что должно быть значением '$ v_a_b'? Вы проверили ответ Уолтера ниже? – anubhava

+0

вы можете дать любое значение $ v_a_b, которое я хочу использовать в дальнейшем блоке моего кода. Да, с помощью eval я могу это сделать. –

ответ

0

Использование Eval явно предварительно оценить выражение.
вашего вопроса,

eval 'echo \$v_"$v_a"_"$v_b"' 

должен работать нормально,
echo \$v_"$v_a"_"$v_b" вычисляет echo $v_a_b, то промежуточный результат вычисляется снова, так что по сути, мы получаем результат $(echo $v_a_b) Примечание: Вы можете процитировать переменная $v_a_b:

eval 'echo \"\$v_"$v_a"_"$v_b"\"' 
+0

спасибо, что сработал ... –

0

Если я правильно понимаю, вы хотите объединить содержимое переменных v_a и v_b (наряду с некоторыми фиксированными строками «v_» и «_»), затем сохраните его в переменной с именем v_a_b.

v_a=a 
v_b=b 
v_a_b='v_'$a'_'$b 
echo $v_a_b 

Выходной сигнал v_a_b.

+0

нет этого я не хочу делать. Я хочу создать новую переменную с результатом двух переменных, а затем использовать ее, как результат будет v_a_b, и я хочу использовать $ v_a_b. –

3

Предположим, у вас есть следующие ВАР:

v_a=a 
v_b=b 
v_a_b="I want this one" 
v_a_c="Wrong one!" 

Как вы получаете I want this one с использованием значений v_a и v_b?
Вы можете использовать Eval, но постарайтесь избежать этого:

# don't do this 
eval echo "\$v_${v_a}_${v_b}" 

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

c="v_${v_a}_${v_b}" 
echo "Using the exclamation mark for retrieving the valueCombined: ${!c}" 

Другой способ использует printf:

printf -v c "v_%s_%s" "${v_a}" "${v_b}" 
echo "Combined: ${!c}" 
0
v_a=a 
    v_b=b 
    v_a_b=c 
    eval V_XYZ='$'"v_"$v_a"_"$v_b 
    echo 'Value= '$V_XYZ 

выход будет б e c

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