【发布时间】:2019-07-16 22:29:56
【问题描述】:
我有一个具有嵌套值的变量。
x=hello
y=world
helloworld=monday
TEMP=$x$y
echo "${!TEMP}" # I get output "monday" which is required
这在 bash 中有效,但在普通 sh 中无效。当我使用 sh 运行相同的命令时,最后一行给出“Bad Substitution”。
如何使用 sh 获得相同的结果?由于某些原因,我无法将 shell 从 sh 更改为 bash,所以我必须使用 sh 来完成。
【问题讨论】:
-
间接变量名引用是主要的代码异味。 What are you trying to do?肯定会有更好的方法。
-
确实 POSIX shell 没有可变间接性,我赞同 @johnkugelman 关于代码异味的评论。
-
我有两个变量,比如 x 和 y,当我组合它们的值时,它们形成另一个变量,就像我上面提到的那样,现在我想从 x 和 y 的值中获取该变量的值。 ...我不认为我解释得很好。 :(
-
有没有更好的方法来达到同样的目标?因为在 bash 中我可以做到,然后在 sh 中一定有办法
-
不不,不要使用 eval。如果您可以退后一步,告诉我们您在代码中的更大目标是什么,我们可以告诉您实现它的更好方法。阅读我在第一条评论中链接的XY problem 页面。您正在询问您尝试的解决方案,我们想知道您的实际问题是什么。 “你正在尝试解决问题 X,并且你认为解决方案 Y 会奏效,但是当你遇到麻烦时,你不会问 X,而是问 Y。”