Bash:从变量名字符串获取变量值(当字符串包含除变量名称以外的其他字符时)

时间:2013-11-14 05:38:47

标签: python bash

鉴于此代码,它打印“abc _ $ {var1}”,但我希望它打印“abc_def”,但是bash脚本有很多我不知道的小细节,所以希望有人可以解释这种行为: / p>

Shell scripts:

function main()
  var1="def"
  var2=$(get_val_sh ${another_var})

  echo ${var2}
  # I want to echo:
  #   abc_def
  # instead, I get:
  #   abc_${var1}


function get_val_sh()
  var3=call_python(get_val_py())
  echo ${var3}


Python:

def get_val_py():
  print "abc_${var1}"

另一件事是,如果我直接从bash脚本返回(而不是调用Python),我会得到所需的结果(但我必须调用python)。它是否与Python中的print有关,在bash中返回一个不同于echo的字符串?我甚至不知道怎么检查这个。

要清楚,下面的代码给出了所需的结果,虽然我不知道为什么但不能使用,因为我需要Python来给我合适的值:

function main()
  var1="def"
  var2=$(get_val_sh ${another_var})

  echo ${var2}
  # I want to echo:
  #   abc_def
  # instead, I get:
  #   abc_${var1}


function get_val_sh()
  echo "abc_${var1}"

1 个答案:

答案 0 :(得分:1)

您如何为var2分配值?

var1="def"
var3="var1" # var3 contains name of the variable. Note: NOT $var1
var2="abc_${var3}" # This will give abc_var1, not abc_def

使用

var2="abc_${!var3}" # This should give abc_def