[英]Multi layer variable substitution in shell.. possible?
我在shell脚本中有多个变量; 我正在尝试保存一些代码重复项,并想执行以下操作
# variables
FLAG=SIM
SIM_ICR_KEY_VAL="http://www.example.com/simi/icr"
REAL_ICR_KEY_VAL="http://www.example.com/real"
基于FLAG值,我想访问正确的变量(不使用IF),当我尝试这样做时,它会回显变量名,而不是值本身。
echo $(echo ${FLAG}_ICR_KEY_VAL)
进一步说明; 我需要在sed statememt中内联使用这些替换:
sed "s!${ISTR_KEY}=.*!${ISTR_KEY}=${SIM_ISTR_KEY_VAL}!" > tmp.file
...我不确定是否可能,请提出建议
通过臭名昭著的eval
可以实现反思:
eval thisvar=\$${FLAG}_INC_KEY_VAL;
echo "We are using $thisvar"
但是,只要您发现自己动态地合成变量名,就可能做错了。 您应该考虑替代方法,例如数组:
ICR_KEY_VAL[0]="http://www.example.com/simi/icr"
ICR_KEY_VAL[1]="http://www.example.com/real"
SIM=0
echo ${ICR_KEY_VAL[$SIM]}
我不知道如何直接执行操作,但是在bash中,您可以间接执行操作:
FLAG=SIM
SIM_ICR_KEY_VAL="http://www.example.com/simi/icr"
REAL_ICR_KEY_VAL="http://www.example.com/real"
FLAG_ICR_KEY_VAL=${FLAG}_ICR_KEY_VAL
sed "s!${ISTR_KEY}=.*!${ISTR_KEY}=${!FLAG_ISTR_KEY_VAL}!" > tmp.file
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.