简体   繁体   English

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

[英]bash, substitute part of variable by another variable

#!/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

Any Ideas ? 有任何想法吗 ?

Use variable indirection like this: 像这样使用变量间接

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

If you are using Bash 4 or later, however, you are probably better off using an associative array : 但是,如果您使用的是Bash 4或更高版本,则最好使用关联数组

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

I use eval function 我使用eval函数

#!/bin/bash

SUNDAY_MENU=BREAD
MONDAY_MENU=APPLES

TODAY=MONDAY

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

echo "I want ${TODAY_MENU}"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM