2016-04-29 111 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