LINUX.ORG.RU

Вопрос по работе BASH

 


0

2
#!/bin/bash

count=0
while (( "$count" < 3 ));
do
   status=$(wget -c -o log_"$count".log http://www.linux.org.ru/ &)
   echo "'$status'"
   (( count++ ))
done

exit 0;

итого будет выполнено 3 запроса к сайту www.linux.org.ru

Вопрос, как узнать, что все wget отработали?

кстати echo «'$status'» не работает, выводяться только "



Последнее исправление: cetjs2 (всего исправлений: 2)

wait $pid
[ $? -eq 0 ] && echo OK || echo BAD

joy4eg ★★★★★
()
Ответ на: комментарий от iVS
#!/bin/bash

count=0
while (( "$count" < 3 ));
do
   status=$(wget -c -o log_"$count".log http://php.ru/ &)
   echo $?
   echo "'$status'"
   (( count++ ))
done

exit 0;

вывод

0
''
0
''
0
''

bkm
() автор топика
Ответ на: комментарий от anonymous

а как проверить-то, что все три отработали и надо следущее действие сделать. допустим только после того как все три wget отработали запустить другой цикл. иначе ждать.

bkm
() автор топика
Ответ на: комментарий от bkm

а как проверить-то, что все три отработали

Проверить, что fail равно 0. // К.О.

korvin_ ★★★★★
()

sudo apt-get install moreutils
man parallel
м? ;)

aol ★★★★★
()
Ответ на: комментарий от bkm

Не делай присваивания, 0 возвращается из-за него, т.е. попробуй

#!/bin/bash

count=0
while (( "$count" < 3 ));
do
   wget -c -o log_"$count".log http://php.ru/
   echo $?
   (( count++ ))
done

exit 0;

И вообще, почему не цикл for?

iVS ★★★★★
()
Ответ на: комментарий от iVS

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

все равно 0, но вроде так и должно быть (не?).

в вашем примере в конце нет амперсанда, т.е. это будет один запрос на одну итерацию цикла?

вообще задумка такая, запустить несколько запросов (три) по разным адресам, как только скрипт отработает запустить по другим (три), но все равно получается последовательно. видимо я не в ту сторону рою, мне нужна контролируемая многопоточность.

bkm
() автор топика

Вопрос, как узнать, что все wget отработали?

наверное тут поможет

       wait [-n] [n ...]
              Wait for each specified child process and return its termination status.  Each n may be
              a process ID or a job specification; if a job spec is  given,  all  processes  in  that
              job's pipeline are waited for.  If n is not given, all currently active child processes
              are waited for, and the return status is zero.  If the  -n  option  is  supplied,  wait
              waits for any job to terminate and returns its exit status.  If n specifies a non-exis‐
              tent process or job, the return status is 127.  Otherwise, the  return  status  is  the
              exit status of the last process or job waited for.

man bash

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.