2016-04-29 104 views
1

我希望能够运行命令从属性文件中获取属性。所以,如果我的属性文件property.props并具有linux bash工具从属性文件中读取属性

username=dsollen 
password=letMeIn 
linux-skills=newb 

我想有一个快速方式使用财产,以管拔出到其他命令。所以

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

或类似的东西;不知道我用`对,但这是一个不同的newb linux问题以后:)

我知道我可以做到这一点与grep和cut/awk/sed /任何组合,但我想知道如果有是一个已经存在的工具,'知道'如何阅读公共财产文件格式,并做这样的事情?如果没有,我可以写一些东西添加到我的脚本文件夹,只是不想重新发明轮子,如果一个更好的轮子已经存在。

+0

这可能是相关的:HTTP://wiki.bash-hackers。 org/howto/conffile –

回答

1

您可以使用gvar来做这项工作。我是作者。

从源代码,这是你最有趣的部分:

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

你可能想用shellcheck.net检查你的代码。 – chepner

+0

我对主页的第5次扫描表明这仅适用于全局变量。它可以用来简单地返回一个变量而不使其成为全局变量吗? – dsollen

+0

@dsollen他发布的函数不会使其成为变量,它只是返回值。你可以做任何你想要的功能。 – Barmar

0

我假设你的属性键是唯一的,如果是的话那么下面可能是一个办法:

grep -w "$1" <property.props 

或得到的价值

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

其中$1是关键。

+2

你应该使用'grep -w',否则如果你在文件中有'pass''''''''',并且'grep''pass',你就会碰撞。 –

+1

啊,这是一个很好的TIL,谢谢! :D –

0

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

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

而在你的shell中使用它:

$ getProp property.pros password 
letMeIn 

$ getProp property.pros linux-skills 
newb 
+0

尽管此代码可能回答这个问题,但提供关于为什么和/或如何回答问题的附加背景将显着提高其长期价值。请[编辑]你的答案,添加一些解释。 – CodeMouse92