(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Bash】curl: (3) Illegal characters found in URLというエラーの解消法

スポンサーリンク

事象

引数にて渡すURLを利用したcurlコマンドにて以下Error。

curl: (3) Illegal characters found in URL
環境情報
$ bash --version
GNU bash, バージョン 4.4.12(3)-release (x86_64-unknown-cygwin)
$ curl --version
curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL

原因/解決策

以下記事にある通り制御コードが入り込んでいる。

変数として渡していた文字列に以下処理を行うと問題なくcurlコマンドが通った。

$ cat hoge.txt | nkf -Lu > hoge2.txt


以下、詳細です。

詳細

テキストファイルを変数として一行ずつ取り込みそれをcurlコマンドで利用する際に

#!/bin/bash
while read line
do
 curl --output - $line
done < ./hoge.txt

以下エラーになりました。

curl: (3) Illegal characters found in URL

テキストファイルに対して文字コードを見ると「^M$」が入っていたので

$ cat -e hoge.txt
https://..^M$

文字コードを変換すると解決しました。

よって同様のエラーが出た際には制御文字(改行コード)を疑うのが良さそうです。