【问题标题】:Shell script variable reflection [duplicate]Shell脚本变量反射[重复]
【发布时间】:2014-08-06 13:34:54
【问题描述】:

我正在编写一个 shell 脚本 (#!/bin/sh),它有一个变量 VAR,其中包含另一个变量 FOO 的名称,而 FOO 又设置为 BAR。

FOO=BAR
VAR=FOO

我想获取在 VAR 中命名的变量的值,比如:

echo "${$VAR}"

但这似乎不起作用。有什么建议吗?

【问题讨论】:

  • 如果 shell 是 Bash,建议的副本是有效的。如果 shell 不是 Bash,那么它就不是适当的副本,因为没有一个答案甚至没有提到替代机制——eval
  • 我解决了这个问题:echo "${!VAR}"。谢谢。
  • 在这种情况下,您必须使用 Bash 而不是 Korn Shell。准确使用您使用的外壳可以提高获得好答案的机会。

标签: bash shell


【解决方案1】:

在 Bash 中:

echo "${!VAR}"

没有 Bash(尽管它也适用于 Bash):

eval echo "\${$VAR}"

注意:eval 是一种非常通用的机制,很容易让您遇到问题。它在这里工作正常,但在更广泛地使用它时要谨慎。

【讨论】:

    猜你喜欢
    • 2011-08-24
    • 2021-08-22
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多