我使用jq來解析JSON數據,並根據作爲命令行參數給出的動態鍵值提取出值。我注意到這是有效的,但我對它是如何在單引號內插入$v
表示懷疑。是否可以用雙引號將表達式'.["\($v)"]'
重寫?我究竟做錯了什麼?使用jq插值字符串
嘗試以下不管出於什麼原因不工作:
recipe_url=$(cat ./*.json | jq -r --arg v "$recipe_key" ".[\"\\($v)\"]")
然而,這並不:
recipe_key='Wilted Greens' # example key to interpolate
recipe_url=$(cat ./*.json | jq -r --arg v "$recipe_key" '.["\($v)"]') # works!
你們兩個都是對的,我能從這個問題得到兩個觀點。主要關注的是爲什麼我錯誤地繼續使用雙引號並從中得出答案。這就是Stackoverflow的偉大之處;它更多的是到達答案,而不是得到一個明確的答案。 – theGrayFox 2014-10-30 00:56:07
我沒有說「好」和「壞」。我表示,對於OP爲什麼要在單引號中避免使用任何和所有內插來確定他想要避免的插入以及哪個插值是他發佈的*確切*問題時,都不理解OP。 – 2014-10-30 01:03:21
@EtanReisner我的觀點是,這不重要**爲什麼**他想要做到「壞」的方式。如同我所做的一樣,向他展示「壞」的方式,如果你喜歡的話,還有一個「更好」的方式,然後讓他決定。 – 2014-10-30 01:10:23