bash,用另一个变量替换变量的一部分

问题描述:

 
#!/bin/bash 

SUNDAY_MENU=BREAD 
MONDAY_MENU=APPLES 

TODAY=MONDAY 


ECHO "I want ${${TODAY}_MENU}" # does not work, bad substitution 

ECHO "I want ${`echo $TODAY`_MENU}" # does not work, bad substitution 

任何想法?bash,用另一个变量替换变量的一部分

使用variable indirection这样的:

varname=${TODAY}_MENU 
echo ${!varname} 

如果你正在使用bash 4或更高版本,但是,你可能最好使用associative array

menu=([sunday]=bread [monday]=apples) 
echo ${menu[$TODAY]} 
+0

谢谢您的建议! – user1623159

我用eval函数

#!/bin/bash 

SUNDAY_MENU=BREAD 
MONDAY_MENU=APPLES 

TODAY=MONDAY 

eval TODAY_MENU=\$\{${TODAY}_MENU\} 

echo "I want ${TODAY_MENU}"