[英]cURL: unmatched brace in URL position when using bash script
[英]Brace usage error while using curl with in bash
使用卷曲后,不喜歡牙套內的牙套。 我嘗試轉義,但沒有幫助...任何想法?
echo "$(curl -s -u ${USERNAME}:${PASSWORD} GET ${hostName}/${path}.json| jq -r -c '[.field1,.field2] | \"(.[0]) ,(.[1])"')"
結果:
jq: error: syntax error, unexpected INVALID_CHARACTER (Unix shell
quoting issues?) at <top-level>, line 1:
error near (.[0]`)`
要調試這種情況,最好首先將其分解為基本組件。 在您的情況下,我猜您打算將jq過濾器設為:
[.field1,.field2] | "\(.[0]), \(.[1])"
去測試:
jq -r -c '[.field1,.field2] | "\(.[0]), \(.[1])"'
{"field1": 1, "field2": 2}
1, 2
一旦您擁有正確的部分,其余的就很容易了。 假設您使用的是一個不錯的外殼,可以使用$()
而不是"$()"
來簡化生活,或者完全避免使用命令替換。
從開發和測試的角度來看,將您知道正確的jq程序放入一個文件(例如program.jq)可能是有意義的,然后可以依次執行以下操作:
(a)使用jq -r -c -f program.jq
獨立模式驗證它
(b)將jq調用插入管道中,以驗證其他地方沒有其他問題。
如果最終不能令人滿意地使用program.jq,則可以考慮為jq程序設置一個shell變量,例如
JQ='[.field1,.field2] | "\(.[0]), \(.[1])"'
echo $(jq -r -c "$JQ")
當然,上面的最后一行僅用於測試。 也許您根本不需要$()
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.