我需要使用其他两个变量值来创建变量。
#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 :(得分: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
并获取构造的var的值:
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}"
答案 1 :(得分: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"\"'
答案 2 :(得分:0)
如果我理解正确,您希望连接变量v_a
和v_b
的内容(以及一些固定字符串'v _'和'_'),然后将其存储在名为{{的变量中1}}。
v_a_b
输出为v_a=a
v_b=b
v_a_b='v_'$a'_'$b
echo $v_a_b
。
答案 3 :(得分:0)
v_a=a
v_b=b
v_a_b=c
eval V_XYZ='$'"v_"$v_a"_"$v_b
echo 'Value= '$V_XYZ
输出将是c