Замените все вхождения тире слева от двоеточия, используя sed

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

$ unset var; var=$(sh -c 'sleep 5; echo foo; exit 42') 
$ echo $? $var 
42 foo
$ unset var; var=$(sh -c 'sleep 5; echo foo; exit 42') & wait
[1] 30250
[1]+  Exit 42                 var=$(sh -c 'sleep 5; echo foo; exit 42')
$ echo $? $var 
0 

Существует wait -n , который возвращается, когда какой-то фоновый процесс завершился, и завершается со статусом завершения этого процесса. Поскольку вы знаете, сколько у вас фоновых процессов, вы можете ждать -n столько раз. Уродливо, но ...

while true
do
  curl someurl1 > file1 &
  curl someurl2 > file2 &
  curl someurl3 > file3 &
  for i in 1 2 3; do
    wait -n || { echo some curl failed; continue 2; }
  done

  dosomething "$(< file1)" &
  dosomething "$(< file2)" &
  dosomething "$(< file3)" &
  for i in 1 2 3; do
    wait -n || { echo some dosomething failed; continue 2; }
  done

  break
done
2
11.02.2018, 11:20
0 ответов

Теги

Похожие вопросы