URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9953
[ Назад ]

Исходное сообщение
"Не работают Bash-команды в shell-скрипте"

Отправлено qazarus , 13-Дек-14 19:13 
Debian 7 с ядром 3.17.3.

Нужно загрузить с сайта несколько страниц, для этого решил воспользоваться конструкцией {1..100}
Запускаю в консоли следующую команду:


wget -E "http://example.org/index?page="{1..100}

Все отлично загружается, претензий нет.
Запускаю вот такой скрипт:

#!/bin/bash

wget -E "http://example.org/index?page="{1..100}

Запускаю, и... начинается загрузка страницы "http://example.org/index?page={1..100}"
Правлю скрипт до такого вида:

#!/bin/bash

for i in {1..100}; do wget -E "http://example.org/index?page=$i"; done

Тот-же результат.
Изменяю вот так:
#!/bin/bash

for ((i=1;i<=100;i++));; do wget -E "http://example.org/index?page=$i"; done  

Получаю ошибку:
Syntax error: Bad for loop variable

В чем проблема?


Содержание

Сообщения в этом обсуждении
"Не работают Bash-команды в shell-скрипте"
Отправлено pavlinux , 13-Дек-14 21:04 
> В чем проблема?


wget -E 'http://example.org/index?page='{1..100};

И ваще, для выкачивания порнофоток есть расширения для браузеров.


"Не работают Bash-команды в shell-скрипте"
Отправлено erera22 , 13-Дек-14 21:04 
Последнее - понятно:
for ((i=1;i<=100;i++));; do wget -E "http://example.org/index?page=$i"; done
=>>
for ((i=1;i<=100;i++)); do wget -E "http://example.org/index?page=$i"; done

а то и:
for i in `seq 1 100`; do wget -E "http://example.org/index?page=$i"; done

А касательно двух первых вариантов - все ок работает на том же debian. Покажите ls -l /bin/bash.


"Не работают Bash-команды в shell-скрипте"
Отправлено pavel_simple , 13-Дек-14 22:42 
>[оверквотинг удален]
> for i in {1..100}; do wget -E "http://example.org/index?page=$i"; done
>
> Тот-же результат.
> Изменяю вот так:
> #!/bin/bash
> for ((i=1;i<=100;i++));; do wget -E "http://example.org/index?page=$i"; done
>
> Получаю ошибку:
> Syntax error: Bad for loop variable
> В чем проблема?

wget -E $(echo http://example.org/index?page={1..100})


"Не работают Bash-команды в shell-скрипте"
Отправлено qazarus , 14-Дек-14 18:35 
Перепробовал все предложенные варианты варианты - заработал только один:
for i in `seq 1 100`; do wget -E "http://example.org/index?page=$i"; done
Спасибо, erera22.

> Покажите ls -l /bin/bash.


root@Debian:~# ls -l /bin/bash
-rwxr-xr-x 1 root root 941252 Сен 25 23:46 /bin/bash

Месторасположение бинарника Баша проверил с самого начала - на месте.

Загрузил около 10к страниц, и понял что это не дело, ибо 1к страниц загружается около 11 минут, что очень долго, с учетом того что мне нужно слить не много не мало около миллиона страниц с сопутствующим контентом в виде картинок, стилей и скриптов.
Делать было нечего - заюзал форточный Offline Explorer, он умеет одновременно загружать до 500 страниц, правда вылетает из-за недостатка памяти, если загружать больше 200к страниц за раз, но это уже совсем другая история.

Тем не менее мне все-же любопытно из-за чего возникла данная проблема, и как её вылечить.

> И ваще, для выкачивания порнофоток есть расширения для браузеров.

Да ну! Разве это по нашему, юзать плагины для закачки порнухи, если есть консоль? Только юниксвей, только хардкор!
А если серьезно - порнофотки можно и с торрентов большими паками выкачать, в моем-же случае нужно очень оперативно слить нужную инфу с сервера, который завтра закрывается. Так сказать мини Вейбак машина для личных целей.


"Не работают Bash-команды в shell-скрипте"
Отправлено pavel_simple , 14-Дек-14 18:42 
>[оверквотинг удален]
> до 500 страниц, правда вылетает из-за недостатка памяти, если загружать больше
> 200к страниц за раз, но это уже совсем другая история.
> Тем не менее мне все-же любопытно из-за чего возникла данная проблема, и
> как её вылечить.
>> И ваще, для выкачивания порнофоток есть расширения для браузеров.
> Да ну! Разве это по нашему, юзать плагины для закачки порнухи, если
> есть консоль? Только юниксвей, только хардкор!
> А если серьезно - порнофотки можно и с торрентов большими паками выкачать,
> в моем-же случае нужно очень оперативно слить нужную инфу с сервера,
> который завтра закрывается. Так сказать мини Вейбак машина для личных целей.

про xargs я так понял ты не в курсе. грусть -- печаль.


"Не работают Bash-команды в shell-скрипте"
Отправлено fantom , 15-Дек-14 13:03 
>>[оверквотинг удален]

GNU bash, version 4.2.53(1)

$ cat test_script
#!/bin/bash

wget -E "http://example.org/index?page="{1..100}

$bash test_script
--2014-12-15 12:01:52--  http://example.org/index?page=1
Распознаётся example.org (example.org)… 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946
Подключение к example.org (example.org)|93.184.216.34|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 404 Not Found
2014-12-15 12:01:52 ОШИБКА 404: Not Found.

--2014-12-15 12:01:52--  http://example.org/index?page=2
Повторное использование соединения с example.org:80.
HTTP-запрос отправлен. Ожидание ответа... 404 Not Found
2014-12-15 12:01:52 ОШИБКА 404: Not Found.

--2014-12-15 12:01:52--  http://example.org/index?page=3
Повторное использование соединения с example.org:80.
HTTP-запрос отправлен. Ожидание ответа... 404 Not Found
2014-12-15 12:01:52 ОШИБКА 404: Not Found.
..................

Усе шуршит со свистом в FC20.....