簡體   English   中英

Unix,替換錯誤嗎?

[英]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"

順便說一句,我建議避免使用全大寫字母的變量名,例如TYPFINAL_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM