事象
引数にて渡す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$
文字コードを変換すると解決しました。
よって同様のエラーが出た際には制御文字(改行コード)を疑うのが良さそうです。