使用unix shell脚本

时间:2016-06-13 14:42:47

标签: shell unix

我需要使用其他两个变量值来创建变量。

#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

4 个答案:

答案 0 :(得分:3)

假设您有以下变量:

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

如何使用I want this onev_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_av_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