1

前几天我偶然发现了一个关于 SO 的问题。如果我想提取HOSTNAME/etc/sysconfig/network 中包含的值

NETWORKING=yes
HOSTNAME=foo

现在我可以执行 grep 和 cut 来获得,foo但是对于类似的问题涉及一些 bash 魔法。我不知道要搜索什么,现在似乎找不到问题。它涉及类似的东西#{HOSTNAME}。好像它被HOSTNAME视为一个键和foo一个值。

4

1 回答 1

2

如果该配置文件与 shell 语法兼容,只需将其包含为 shell 脚本即可。IIRC/etc/sysconfig类似 Red Hat 的发行版中的文件确实被设计为可被 shell 解析。请注意,这意味着

  • 如果 shell 特殊字符可能最终出现在变量的值中,则必须正确引用它们。例如,var="value with spaces"需要引号。var="with\$dollar"需要反斜杠。
  • 该脚本可能会运行将要执行的任意代码,因此只有在您信任其内容的情况下才可以这样做。

如果这些假设是有效的,那么你可以走简单的路线:

. /etc/sysconfig/network
echo "$HOSTNAME"

关于引号和大括号,请参阅$VAR vs ${VAR} 和 to quote or not to quote

于 2012-09-07T10:16:09.927 回答