Номер задания GNU Parallel echo - PullRequest
1 голос
/ 20 июня 2020

Итак, у меня есть этот код: parallel --jobs 5 curl --write-out '\\n %{http_code}\\n' --silent --head --output /dev/null https://example.com/id={} ::: {427240690783..427240690793}

, который возвращает 10 лотов из 404.

Если код HTTP-ответа был 200, я хочу вывести текущий идентификатор итерации задания, отображается внутри {}. Как бы мне go повторить это?

Извините, я новичок в GNU.

1 Ответ

1 голос
/ 22 июня 2020

Когда команда становится такой сложной, я обычно делаю функцию:

doit() {
  curl --write-out '\n  %{http_code}\n' --silent --head --output /dev/null https://example.com/id="$1"
}
export -f 
parallel doit ::: {427240690783..427240690793}

Это потому, что легко проверить, правильно ли функция выполняет одну операцию ввода. Когда это происходит, вы вызываете GNU Parallel для вызова функции.

Здесь вы, вероятно, захотите что-то вроде:

grep200() {
  status=$(curl --write-out '%{http_code}' --silent --head --output /dev/null "$1"); 
  if [ $status == 200 ] ; then
    echo "$1";
  fi;
}
export -f grep200
parallel grep200 https://example.com/id={} ::: {427240690783..427240690793}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...