[英]Unix, bad substitution error?
我有以下變量:
TYP=a1
STAT_a1=statistical
FINAL_VARIABLE=${STAT_${TYP}}
但是我得到一個錯誤:
-bash: ${STAT_${TYP}} : bad substitution
我想要的是FINAL_VARIABLE的值是“統計”
請幫忙..
您不能像這樣嵌套變量擴展。 但是您可以將間接變量擴展與${!varname}
:
TYP=a1
STAT_a1=statistical
STAT_var=STAT_${TYP} # This sets STAT_var to "STAT_a1"
FINAL_VARIABLE=${!STAT_var} # This sets FINAL_VARIABLE to "statistical"
順便說一句,我建議避免使用全大寫字母的變量名,例如TYP
和FINAL_VARIABLE
-在shell和/或其他程序中有許多全大寫字母的名稱具有特殊含義,並且如果您不小心使用了其中一種奇怪的事情,可能會發生。
使用eval
,將要推遲評估的所有內容都用單引號引起來:
eval 'FINAL_VARIABLE=${STAT_'${TYP}'}'
$ TYPE=al
$ STAT_a1=statistical
$ eval 'FINAL_VARIABLE=${STAT_'${TYP}'}'
$ echo $FINAL_VARIABLE
statistical
你也可以這樣
root@myagent: tmp$ F=$(echo "${STAT_a1}"_"${TYP}")
root@myagent: tmp$ echo $F
statistical_a1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.