実現したいこと
シェルスクリプトのファイル内にcurlコマンドを実行する行があります。
URLは直書きせず、環境変数から取り込みます。
スクリプトを実行する前に環境変数を設定するためのファイルを置きます。
env.sh
bash
1export CURL_URL=https://test.com
スクリプト内で上記で置いたファイルをsourceコマンドで取り込みます。
そのあと、curlコマンドを実行します。
test.sh
bash
1#!/usr/bin/env bash 2 3source ./env.sh 4curl ${CURL_URL} -X POST
発生している問題・分からないこと
curlコマンドの実行エラーとなってしまいます。
環境変数の中身は問題ありません。
> ./test.sh curl: (3) URL using bad/illegal format or missing URL
環境変数がちゃんと設定されているか確認
test.sh
bash
1#!/usr/bin/env bash 2 3source ./env.sh 4echo ${CURL_URL} 5curl ${CURL_URL} -X POST
結果
https://test.com curl: (3) URL using bad/illegal format or missing URL
環境変数を使わず直書きした場合は問題ありません。
test.sh
bash
1#!/usr/bin/env bash 2 3curl https://www.test.com -X POST
また、sourceコマンドで取り込まず、shを実行する前にコマンドラインでexportをした場合も問題ありません。
> export CURL_URL=https://test.com > ./test.sh
なぜか、スクリプト内のsourceコマンドで取り込んだ環境変数をcurlでコマンドで使用することができないのです。
とても特殊な状況なのか、調べても同様の事象がヒットしませんでした。
エラーメッセージ
curl: (3) URL using bad/illegal format or missing URL
試したこと
環境変数の書き方の問題かと思い、以下も全て試しましたが同じエラーです。
curl "${CURL_URL}" curl ${CURL_URL} curl CURL_URL curl $(echo ${CURL_URL})
### 調べたこと - [x] teratailやGoogle等で検索した - [x] ソースコードを自分なりに変更した ##### 上記の詳細・結果 Web上で同様の事例がなく、解決に至らなかった。
回答1件
あなたの回答
tips
プレビュー