0

鉴于此代码,它会打印“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}"
4

1 回答 1

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
于 2013-11-14T06:17:45.210 回答