私はネットワークの専門家なので、これについての助けが必要なので、質問する前に何をしたいのかを説明します。
以下を実行するバッチスクリプトを作成しています。
- 外部サーバーからGETリクエスト(jsonファイル)、データを受信し、ローカルに.jsonとして保存
- JQを使用したjsonのナビゲーション結果[0]。タイトル
- カール要求のパラメータとして「タイトル」を使用する
一度ローカルにファイルがあります。 JQ を使用してオブジェクトのデータを検索します。
cat file.json | jq '.results[0].title' > $1 &&
curl -i -H "Accept: application/html" -H "Content-Type: application/html" -X GET http://example.com/test/$1 > test.txt
パイプラインコマンドで一時的に使用するために、コマンドライン "$ 1"にローカル変数を設定できますか?
私はここから出てきますか?
答え1
通常、特別な意味(スクリプト/関数/などに渡される最初の引数)がありますが、$1
実際にはコマンドの出力を変数に格納できます。
title=$(jq -r '.results[0].title' file.json)
curl -i -H "Accept: application/html" -H "Content-Type: application/html" -X GET http://example.com/test/"$title" > test.txt
最初の部分では、コマンドを実行してjq -r '.results[0].title' file.json
出力をstdout
変数に保存しますtitle
。次にコマンドを実行しcurl
、変数をtitle
URLの一部に展開します。