我在shell脚本中有这段代码
id='this'
sql="hello $id"
echo "$sql"
id="salut"
echo "$sql"
它会回显
你好,
你好,
我怎样才能获得
你好,
你好salut
换句话说,如何在其他变量中更改变量id?
答案 0 :(得分:1)
您可以使用 eval ,但这可能存在风险(取决于变量中的内容)。
id='this'
sql="hello \$id"
eval "echo $sql"
id='salut'
eval "echo $sql"
一种安全的好方法是使用函数重置 sql 变量。
prepare_sql() {
sql="hello $id"
}
id='this'
prepare_sql
echo $sql
id='salut'
prepare_sql
echo $sql
您甚至可以将作业放入函数中。
change_id() {
id=$1
sql="hello $id"
}
change_id this
echo $sql
change_id salut
echo $sql
答案 1 :(得分:0)
变量的值在您引用它们时设置。所以对于你想要的,你必须这样做:
id='this'
sql="hello $id" # here, $id == this, so sql == "hello this"
echo "$sql"
id="salut"
sql="hello $id" # here, $id == salut, so sql == "hello salut"
echo "$sql"
更改变量时不会重新评估变量,除非您明确要求变量。