質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

Q&A

解決済

2回答

3530閲覧

bash curlでの変数の展開について

naizawa

総合スコア16

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

0グッド

0クリップ

投稿2020/09/21 10:18

前提・実現したいこと

bash curlを使用して、POST処理を行いたいが、設定した変数の値が展開されない。
半日悩みましたが、これはawkなどで文字列を入れ替えなどしないと駄目なのでしょうか。

発生している問題・エラーメッセージ

bash実行時、変数が展開されない。

--data-urlencode 'client_id="$(cat .env_cid)"'
--data-urlencode 'client_secret="$(cat .env_sid)"'
--data-urlencode 'refresh_token="$(cat .env_ref)"'

該当のソースコード

bash
---実行したいコマンド

curl --location --request POST 'https://<URI省略>' \

--header 'Accept: application/json'
--header 'Content-Type: application/x-www-form-urlencoded'
--data-urlencode 'grant_type=refresh_token'
--data-urlencode 'client_id="$(cat .env_cid)"'
--data-urlencode 'client_secret="$(cat .env_sid)"'
--data-urlencode 'refresh_token="$(cat .env_ref)"'

試したこと

値が格納された.env_ref,.env_cid,.env_sidファイルは同一カレントでcatできる状態で、
念のために事前に変数に入れてechoで値の変数展開ができることは確認しております。

Webを検索したのですが、類似事象が見当たらずここに記載させていただきました。

補足情報(FW/ツールのバージョンなど)

上記、解決方法はございますでしょうか。

以上、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

bashの変数展開やコマンド置換は'で囲まれた内部では行なわれません。

bash

1--data-urlencode client_id="$(cat .env_cid)" \ 2--data-urlencode client_secret="$(cat .env_sid)" \ 3--data-urlencode refresh_token="$(cat .env_ref)"

とすれば動きませんかね。

投稿2020/09/21 10:35

編集2020/09/21 10:38
Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naizawa

2020/09/21 13:33 編集

迅速な回答ありがとうございます。 ご指摘の通りです。基本的な事を見落としてました。 某製品のRestAPIなのですが、「'」付が動作サンプルとなっておりましたので、思い込みで気が付きませんでした。 Daregada様の回答をベストアンサーとしたかったのですが、初めて使用したので変更方法が分かりませんでした。
guest

0

「'」を外す事にでレスポンスが200 OKにて、API実行が可能となりました。
ヒアドキュメントでこれから対応しようかと考えてただけに、感謝です。
ありがとうございました。

投稿2020/09/21 13:29

naizawa

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naizawa

2020/09/21 16:11

大変失礼しました。ベストアンサーの修正方法も併せて教えていただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問