gpt4 book ai didi

string - 如果变量名存储为字符串,如何获取变量值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:04 25 4
gpt4 key购买 nike

如果我将变量名称作为字符串,我如何检索 bash 变量值?

var1="this is the real value"
a="var1"
Do something to get value of var1 just using variable a.

上下文:

我有一些 AMI ( Amazon Machine Image ),我想启动每个 AMI 的几个实例。一旦他们完成启动,我想根据其 AMI 类型设置每个实例。我不想在任何 AMI 中烘焙大量脚本或 key ,所以我准备了一个通用的启动脚本并将其放在 S3 上。带有可公开访问的链接。在 rc.local 中,我放了一小段代码来获取启动脚本并执行它。这就是我在 AMI 中的全部内容。然后每个 AMI 访问适用于所有 AMI 的通用配置脚本和每个 AMI 的特殊设置脚本。这些脚本是私有(private)的,需要签名 URL 才能访问它们。

现在,当我启动 AMI 实例 (my_private_ami_1) 时,我会为 S3 上显示的另一个文件传递一个签名 URL,其中包含键/值对形式的所有私有(private)脚本的签名 URL。

config_url="http://s3.amazo.../config?signature"
my_private_ami_1="http://s3.amazo.../ami_1?signature"
...
当启动脚本运行时,它会下载上述文件和 source 的文件。然后它会检查其 AMI 类型并为自己选择正确的设置脚本。

ami\_type=GET AMI TYPE #ex: sets ami\_type to my\_private\_ami\_1
setup\_url=GET THE SETUP FILE URL BASED ON AMI\_TYPE # this is where this problem arises

所以现在我可以拥有一个通用代码,它可以触发实例而不管它们的 AMI 类型,并且实例可以自行处理。

最佳答案

你可以使用${!a}:

var1="this is the real value"
a="var1"
echo "${!a}" # outputs 'this is the real value'

这是一个间接 parameter expansion 的例子:

The basic form of parameter expansion is ${parameter}. The value of parameter is substituted.

If the first character of parameter is an exclamation point (!), it introduces a level of variable indirection. Bash uses the value of the variable formed from the rest of parameter as the name of the variable; this variable is then expanded and that value is used in the rest of the substitution, rather than the value of parameter itself.

关于string - 如果变量名存储为字符串,如何获取变量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56050533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com