Более, чем вероятный это - Ваше использование set
. Это присвоится 'сегодня', '=' и вывод date
программа к позиционным параметрам (иначе параметры командной строки). Вы хотите просто использовать оболочку C (который Вы отмечаете это как "удар", так вероятно, не), Вы захотите использовать:
today=`date +%Y-%m-%d.%H:%M:%S` # or whatever pattern you desire
Заметьте отсутствие пробелов вокруг знака "равно".
Вы также не хотите использовать &
в конце Ваших операторов; который заставляет оболочку не ожидать команды для окончания. Особенно, когда каждый полагается на следующее. find
команда могла перестать работать, потому что она запускается перед mkdir
.
Вы видите, что заголовки HTML используют -I
. Если перенаправление является метаобновлением, оно было бы, должен таким образом как заголовок.
lamp@oort ~ $ curl -I http://google.com<br>
HTTP/1.1 301 Moved Permanently<br>
Location: http://www.google.com/<br>
Content-Type: text/html; charset=UTF-8<br>
Date: Thu, 21 Nov 2013 14:59:13 GMT<br>
Expires: Sat, 21 Dec 2013 14:59:13 GMT<br>
Cache-Control: public, max-age=2592000<br>
Server: gws<br>
Content-Length: 219<br>
X-XSS-Protection: 1; mode=block<br>
X-Frame-Options: SAMEORIGIN<br>
Alternate-Protocol: 80:quic
Если перенаправление происходит через PHP, Вы могли бы обнаружить это путем сравнения, куда браузер идет по сравнению с тем, куда это на самом деле идет... Существует набор способов сделать это с Python, JS, и т.д. Один проект, который может быть интересен Вам, является phantomjs, scriptable бездисплейным браузером.
Попробуйте это:
for link in link1 link2 link3; do
curl -Is "$link" | awk '/Location/{print $2}'
done
Или использование netcat:
for link in link1 link2 link3; do
printf '%s\n%s\n\n%s\n' 'HEAD / HTTP/1.1' "Host: $link" 'Connexion:close' |
netcat $link 80 | awk '/Location/{print $2}'
done
Из man curl
:
-w, --write-out <format>
Defines what to display on stdout after a completed and
successful operation.
<...>
redirect_url When an HTTP request was made without -L to
follow redirects, this variable will show the
actual URL a redirect would take you to.
(Added in 7.18.2)
Так что, вероятно, curl -w "%{redirect_url}" link1
даст вам первый url перенаправления.
Возможно, вам подойдет что-то вроде этого:
URL="http://google.com"
while [ -n "${URL}" ]
do
echo $URL
URL=$(curl -sw "\n\n%{redirect_url}" "${URL}" | tail -n 1)
done