SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【linux】wgetでパラメータが正常に渡らないとき

問題

wgetでURLの後ろのクエリ文字列がうまく渡らないのですがなぜでしょうか。

答え

wget と cron を使えば、指定の日時にhttpで指定のURLにアクセスさせることができる。

ところで、こんなクエリ文字列付きのURLをcrontabに書いたとき、期待したとおりにパラメータが渡らない。

0 * * * * /usr/bin/wget https://www.softel.co.jp/index.php?parameter1=xxxxxx&parameter2=yyyyyy

parameter2のパラメーターが受け渡されない。

上の例では、原因は「&」。

&(バックグラウンドで実行)、&&(最初のコマンドが正常に実行された場合に、次のコマンドを実行)、;(最初のコマンド実行後、次のコマンドを実行)、||(最初のコマンドが正常に実行されなかった場合に、次のコマンドを実行)など、コマンドラインで特別な意味がある文字列があり、URLの&があることでひとつながりのコマンドと認識されないため。

下記のようにダブルコーテーションを使用すればうまくいく。

0 * * * * /usr/bin/wget "https://www.softel.co.jp/index.php?parameter1=xxxxxx&parameter2=yyyyyy"

基本的にwgetを実行する際は、URLをダブルコーテーションで囲めば問題なしです。

★ cron に関係なく、wget単体の場合にも、& を含むURLはダブルクォーテーションで囲まないとだめです。

#cron #crontab #wget

関連するメモ

コメント(2)

匿名 2011年11月20日 05:17

だからできなかったんだ・・・ &が問題だったんですね。
問題が解決しました。ありがとう!

匿名 2019年5月29日 10:44

悩みに悩んで悪戦苦闘だったけど、そう言うことか…
今まで普通に動いていたのに突然だめになったからなおさら分かりにくかった。
もっと早くここに辿り着いていれば。