【问题标题】:linux bash tool to read property from property file [duplicate]linux bash工具从属性文件中读取属性[重复]
【发布时间】:2016-08-24 20:45:20
【问题描述】:

我希望能够运行命令以从属性文件中获取属性。所以如果我的属性文件是 property.props 并且有

username=dsollen
password=letMeIn
linux-skills=newb

我想要一种快速 方法来提取属性以管道到其他命令。所以

 ./myProgram -v -p `getProp property.props password`

或类似的东西;不确定我是否使用了 ` 正确,但这是一个不同的 newb linux 问题供以后使用:)

我知道我可以使用 grep 和 cut/awk/sed/whatever 的组合来做到这一点,但我想知道是否有一个已经存在的工具“知道”如何读取常见的属性文件格式并执行类似的操作这?如果没有,我可以写一些东西添加到我的脚本文件夹中,如果已经存在更好的轮子,我不想重新发明轮子。

【问题讨论】:

标签: linux bash


【解决方案1】:

您可以使用 gvar 来完成这项工作。顺便说一句,我是作者。

从源代码来看,这是你感兴趣的部分:

get_variable() {
  < "$FILE" grep -w "$1" | cut -d'=' -f2
}

【讨论】:

  • 你可能想用 shellcheck.net 检查你的代码。
  • 我对主页的 5 秒扫描表明这仅适用于全局变量。它可以用来简单地返回一个变量而不使其成为全局变量吗?
  • @dsollen 他发布的函数没有使它成为变量,它只是返回值。你可以用这个函数做任何你想做的事情。
【解决方案2】:

我假设您的属性键是唯一的,如果是这样,那么以下可能是一种方法:

grep -w "$1" <property.props

或获取价值

(grep -w "$1" | cut -d= -f2) <property.props

$1 是关键。

【讨论】:

  • 您应该使用grep -w,否则如果文件中有passpassword 并且您使用grep 查找pass,则会发生冲突。
  • 啊,这是一个很好的 TIL,谢谢! :D
【解决方案3】:

看,在你的 .bashrc 中定义一个函数:

getProp() {
  awk -F "=" "/^$2=/ {print "'$2'"; exit; }" $1
}

并在你的 shell 中使用它:

$ getProp property.pros password
letMeIn

$ getProp property.pros linux-skills
newb

【讨论】:

  • 虽然此代码可以回答问题,但提供有关它为什么和/或如何回答问题的额外上下文将显着提高其长期价值。请edit你的答案添加一些解释。
猜你喜欢
  • 2019-06-23
  • 1970-01-01
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-18
相关资源
最近更新 更多