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]}
答
我用eval函数
#!/bin/bash
SUNDAY_MENU=BREAD
MONDAY_MENU=APPLES
TODAY=MONDAY
eval TODAY_MENU=\$\{${TODAY}_MENU\}
echo "I want ${TODAY_MENU}"
谢谢您的建议! – user1623159