string - Bash:如何构建字符串以从特定名称的字符串中获取输出
问题描述
在一个 bash 脚本中,我有一个从另一个程序的输出返回的代码ipsumCode
,并将每个代码(有数百个)对应的自定义注释设置为字符串,以便于编辑。
我不是依赖于每个代码的 if 语句并为每个代码构建一个自定义注释,而是试图将其全部简化为一个if
可以显示适当输出的测试。
#!/bin/bash
identifier="FooBar"
#...
msg_456="Some description here."
#...
msg_599="A different description here."
msg_600="Yet another different description here."
#...
# $ipsumCode is set by output from another program, but hard-code it here to test
ipsumCode=599
ipsumMessage=msg_$ipsumCode
#...
if [ "$ipsumCode" -ge 456 ]; then
printf "$identifier: $ipsumMessage\n"
#...
fi
由于ipsumCode
在这种情况下是 599,我如何显示的内容msg_599
?
以上显示:
FooBar: msg_599
期望的输出:
FooBar: A different description here.
我看过几个类似的问题和答案,但都处理以各种方式组合输出,而不是从另一个字符串构建字符串名称并输出匹配字符串的内容。
解决方案
您需要使用间接扩展:
printf "$identifier: ${!ipsumMessage}\n"
使用您的整个示例,这给出了:
FooBar:这里有不同的描述。
推荐阅读
- python - 在数据列上计算希尔伯特变换
- javascript - JavaScript 中的多个或运算符
- java - Servlet 过滤器未初始化
- pine-script - Pinescript 更高的时间框架蜡烛收盘价
- node.js - 如何在不退出服务器的情况下阻止特定函数在 nodejs 中执行?
- python - Manim:在现有对象后面创建对象(在创建时强制 z-index)
- javascript - React:使用顶级常量对象打破 2 个相关上下文之间的依赖关系
- python - 未知标签类型:应用逻辑回归时为“连续”
- rust - 如何正确使用与其实现分开的文件中的特征
- python - 如何在 spyder、python 中绘制多个函数