Curl
在 req.xml 文件中使用帶有 ${=(System.nanoTime())} 的 curl
我希望能夠在使用 curl 時生成系統納秒序列
我的程式碼是這樣的:
curl -X POST -H ‘內容類型:文本/xml’ -d @req.xml server_URL > result.xml
req.xml 包含以下內容:
<MessageSeq>${=(System.nanoTime())}</MessageSeq>
所以請求中的期望值應該是這樣的:
2163586109424686
但相反,它給了我:
$ {= (System.nanoTime ())}
以納秒為單位將其轉換為系統計時器的任何方式。
不幸的是,cURL 沒有用於值插值的本機機制。但是,您可以使用一些
sed
魔法來代替:sed "s/\${TIME}/$(date +%s%N)/g" req.xml | curl -X POST -H 'Content-Type: text/xml' -d @- server.tld > result.xml
該
date
命令將以指定的格式輸出目前時間。%s
是自 UNIX 紀元以來的秒數,%N
是目前秒的納秒數。在 bash中,
$(...)
帶"
引號的字元串會將命令的輸出插入另一個命令的參數中。這將生成一個 sed 命令,將所有實例替換${TIME}
為目前時間。curl 參數-d @-
使它從標準輸入讀取 POST 數據。雖然您可以保留每個表達式的語法,但我認為這不值得。