カールを使用すると、システムナノ秒シーケンスを生成できるようにしたいです。
私のコードは次のとおりです
curl -X POST -H 'コンテンツタイプ: テキスト/xml' -d @req.xml サーバー_URL > 結果.xml
req.xmlには次の内容が含まれています。
<MessageSeq>${=(System.nanoTime())}</MessageSeq>
したがって、要求の予想値は次のようになります。
2163586109424686
しかし、それは私に次のものを与えます:
${=(System.nanoTime())}
ナノ秒単位でシステムタイマーに変換する方法です。
ベストアンサー1
残念ながら、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 では、 -quoted 文字列を$(...)
使用して、"
あるコマンドの出力を別のコマンドの引数に挿入します。これにより、すべてのインスタンスを${TIME}
現在の時刻に置き換えるsedコマンドが生成されます。カールパラメータは-d @-
stdinからPOSTデータを読み取ることができます。各式の構文を維持することはできますが、それほど価値はないと思います。