从下面的代码中,在变量'yy'上用x替换'critical_'后,如何使'zz'的值变为500
xab123=500
yy="critical_ab123"
zz=${"${yy//critical_/x}"}
echo $zz
而不是结果,有一个错误:
line 8: ${"${yy//critical_/x}"}: bad substitution
感谢 ADI
答案 0 :(得分:7)
可能是这样的:
xab123=500
yy="critical_ab123"
zz="${yy//critical_/x}"
echo ${!zz}
500
答案 1 :(得分:1)
一个有趣的用法是当你调用bash函数时,你可以对传入的参数使用间接。然后,你可以使用命令替换以嵌套的方式嵌套对间接函数的调用。
deref() { echo "${!1}"; }
aa="bb"
bb="cc"
cc="hello"
echo "$(deref aa)" # bb
echo "$(deref "$(deref aa)")" # cc
echo "$(deref "$(deref "$(deref aa)")")" # hello
以下deref
用于解决OP的问题:
deref() { echo "${!1}"; }
xab123="500"
yy="critical_ab123"
zz="$(deref "${yy//critical_/x}")"
echo "$zz" # Outputs: 500
基于@ charles-duffy的应用编辑评论:
echo "$zz"
优于echo $zz
function deref { echo "${!1}" ; }
替换为deref() { echo "${!1}" ; }