Назад | Перейти на главную страницу

Проблема с кодировкой URL с помощью cron и wget

У меня есть простой сценарий bash:

#!/bin/bash
wget -q 'http://requestb.in/1fq0r3s1?foo=a%2Bb' -O /dev/null

Если я запустил это из командной строки, а затем проверю на http://requestb.in/1fq0r3s1?inspect я вижу

Строка запроса
фу: а + б

Чего я и ожидал.

Однако когда скрипт bash запускается CRON, я вижу

Строка запроса
фу: а б

Похоже, что-то декодировало URL-адрес перед отправкой, преобразовав %2B в + который затем интерпретируется принимающим сервером как пробел.

Может ли кто-нибудь объяснить это и помочь мне понять, как заставить скрипт вести себя в cron, как при запуске из командной строки?

(Заметка: curl не страдает таким же поведением, но мне интересно узнать, почему wget ведет себя так)

% (процент) означает новую строку в cron!

Так что вы либо должны убежать от этого вот так foo=a\%2Bb или поместите свою команду в файл bash и запустите этот файл в crontab.