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