[英]What does the $'{}' mean in curl command
我想知道當我發送POST時curl命令中的$是什么意思。
例如curl -X POST mydomain.com -d $'{\\n"some.*.something": "myvalue"\\n}'
此外,我試圖在我的shell腳本中參數化myvalue
,但是我無法做到。 有什么建議?
在將shell傳遞給curl之前,shell會解釋$'{\\n"some.*.something": "myvalue"\\n}'
。
$'...'
是所謂的ANSI C字符串 。 它們以雙引號字符串 "..."
和單引號字符串 '...'
旁邊的shell語言存在。
由於數據本身 - 似乎是json - 包含雙引號,因此雙引號字符串不能用於包裝數據而不轉義數據本身中的雙引號。 意思是它需要看起來像這樣:
"{\n\"some.*.something\": \"myvalue\"\n}"
基本上單引號字符串可用於避免逃避"
。
'{\n"some.*.something": "myvalue"\n}'
但由於數據包含換行符轉義序列\\n
並且轉義序列不會在單引號字符串中擴展,因此問題中示例的作者使用ANSI C字符串$''
。
使用ANSI C字符串可以獲得兩者:它們可以避免轉義數據中的雙引號,並且仍然可以擴展換行符轉義序列。
shell擴展后,對於curl,數據如下所示:
{
"some.*.something": "myvalue"
}
進一步閱讀: https : //www.gnu.org/software/bash/manual/html_node/Quoting.html
我還是不知道$'{}'是什么意思。 但是,我確實將myvalue
設置為參數化。
"{\"some.*.something\":\"${myValueParamerterized}\"}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.