req.xml ファイルで ${=(System.nanoTime())} でカールを使用します。

req.xml ファイルで ${=(System.nanoTime())} でカールを使用します。

カールを使用すると、システムナノ秒シーケンスを生成できるようにしたいです。

私のコードは次のとおりです

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データを読み取ることができます。各式の構文を維持することはできますが、それほど価値はないと思います。

関連情報