curlコマンドの出力を環境変数にパイプし、他のcurlコマンドで使用する方法は?

curlコマンドの出力を環境変数にパイプし、他のcurlコマンドで使用する方法は?

アクセストークンを取得できるRESTエンドポイントがあります。アクセストークン(JSON Webトークン、JWT)を取得して値を環境変数にエクスポートするには、次の手順を実行します。

export ACCESS_TOKEN=$(curl -i -H 'Content-Type: application/json' -X POST -d @credentials.json http://localhost:8080/api/user/login)

次に、このトークンをコンソールにエコーして、次のecho $ACCESS_TOKENような結果を得ます。

eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1MTBlMjRiYWZmZTY0NjMyOGRiNjg1N2ViMTdlZTE1NCISImFkZHIiOiIwOjA6MDowOjA6MDowOjEiLCJzy2H LCJp Y XQiOjE0NjgzNzg5NDV9.COGBYBrx3oQva2kIiObBOYkEFIL2BODcrSivxWvhuLS-aLsrMGO2z2aCddpwS2yZUB88Q3GOIU8QklbnfRMprQ

最初の文字の前にスペースがあることに注意してください。コンソールから直接値をエクスポートしてから再エコーすると、スペースがまだ残っているため、これは問題にならないと思います。

export ACCESS_TOKEN=eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1MTBlMjRiYWZmZTY0NjMyOGRiNjg1N2ViMTdlZTE1NCIsImFkZHIiOiIwOjA6MDowOjA6MDowOjEiLCJzY2hlbWUiOiJodHRwIiwicG9ydCI6IjgwODAiLCJpYXQiOjE0NjgzNzg5NDV9.COGBYBrx3oQvA2kIiObBOYkEFIL2BODcrSivxWvhuLs-aLsrMGO2z2aCddpwS2yZUB88Q3GOIU8QklbnfRMprQ

このトークンを使用して REST エンドポイントをテストし、次の操作を試みる必要があります。

curl -i \
 -H 'x-access-token: '$ACCESS_TOKEN'' \
 -X POST -d @mydata.json \
 http://localhost:8080/api/data

ただし、次のような結果が表示されます。

カール:(7)サーバーに接続できません
Curl:(3)URLに無効な文字が含まれています。
カール:(6)ホストを解決できません:サーバー
Curl:(3)URLに無効な文字が含まれています。
カール: (6) ホストを解決できません: Access-Control-Allow-Methods
カール:(6)ホストを確認できません:POST、
カール:(6)ホストを確認できません:PUT、
カール:(6)ホストを確認できません:GET、
カール:(6)ホスト:オプションを確認できません。
Curl:(3)URLに無効な文字が含まれています。
カール: (6) ホストを解決できません: Access-Control-Max-Age
Curl:(3)URLに無効な文字が含まれています。
カール: (6) ホストを解決できません: Access-Control-Allow-Headers
カール:(6)ホストを確認できません:ソース、
カール: (6) ホストを確認できません: X-Requested-With,
カール:(6)ホストを解決できません:コンテンツタイプ、
カール: (6) ホストを確認できません: 受け入れ、
Curl:(3)URLに無効な文字が含まれています。
カール: (6) ホストを解決できません: Access-Control-Allow-Credentials
Curl:(3)URLに無効な文字が含まれています。
カール:(6)ホストを解決できません:コンテンツタイプ
Curl:(3)URLに無効な文字が含まれています。
curl:(6)ホストを解析できません:content-length
Curl:(3)URLに無効な文字が含まれています。
カール: (6) ホストを確認できません: 日付
カール:(6)ホストを確認できません:水曜日、
カール:(7)ホストを確認できません:水曜日、
カール:(6)ホストを確認できません:7月
カール:(7)ホストを確認できません:7月
カール: (6) ホストを確認できません: 03:02
Curl:(3)URLに無効な文字が含まれています。
Curl:(3)URLに無効な文字が含まれています。
カール:(6)ホストを確認できません。 eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1MTBlMjRiYWZmZTY0NjMyOGRiNjg1N2ViMTdlZTE1NCIsImFkZHIiOiIwOjA6MDowOjA6MDowOjEiLCJzY2 iLCJpYXQiOjE0NjgzNzg5NDV9.COGBYBrx3oQvA2kIiObBOYkEFIL2BODcrSivxWvhuLS-aLsrMGO2z2aCd
HTTP/1.1 100 続き

HTTP/1.1 403 禁止
サーバー: Apache-Coyote/1.1
アクセス制御を許可するメソッド:POST、PUT、GET、OPTIONS、DELETE
アクセス制御最大期間:3600
アクセス制御許可ヘッダー: Origin, X-Requested-With, content-type, accept, x-access-token
アクセス制御を許可する資格情報:true
コンテンツの長さ:0
日付: 2016年7月13日 水曜日 03:23:04 GMT
接続:閉鎖

export ACCESS_TOKEN=....シェルで同じコマンドを直接実行すると、curlすべてがうまく機能します。

また、エクスポートをshファイルに入れて、上記curlのコマンドを実行すると機能します。

#!/bin/bash
export ACCESS_TOKEN=eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI1MTBlMjRiYWZmZTY0NjMyOGRiNjg1N2ViMTdlZTE1NCIsImFkZHIiOiIwOjA6MDowOjA6MDowOjEiLCJzY2hlbWUiOiJodHRwIiwicG9ydCI6IjgwODAiLCJpYXQiOjE0NjgzNzkwMjB9.lV6jSf9w5_AbsPrNcWcgQpS-DWQVxnH65u06BDGIyL-ST_gg4xXZ2KLAs-kbwckRB3OFy637G1op6PZ2tpHdUQ

私はここで何が間違っているのか知っていますか?

ベストアンサー1

問題は使用法にあります。-iこれは、出力にヘッダーが含まれるためです。

奇妙なことに、そうしないと、echo "$ACCESS_TOKEN"REST応答を汚染する返されたヘッダーは表示されません。

ちょうど削除する-iと動作します。

おすすめ記事