Python Bash:从变量名字符串中获取变量值(当字符串包含变量名以外的字符时)

Python Bash:从变量名字符串中获取变量值(当字符串包含变量名以外的字符时),python,bash,Python,Bash,给定这段代码,它打印“abc_${var1}”,但我希望它打印“abc_def”,但bash脚本有很多我不知道的小细节,所以希望有人能解释这种行为: 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} func

给定这段代码,它打印“abc_${var1}”,但我希望它打印“abc_def”,但bash脚本有很多我不知道的小细节,所以希望有人能解释这种行为:

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}"

您如何为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
使用


你能不能把代码块保留为一种语言?在标记为“shell脚本”的块中使用Python风格的缩进已经很可疑了,当我们试图解释谁调用谁时,它会变得非常混乱。
var2="abc_${!var3}" # This should give abc_def