Запустите параллельную команду и перенаправьте вывод к файлам с определенным именем

Вы можете определить функцию перехвата для перехвата любой ошибки, возникающей в сценарии.

#!/usr/bin/ksh
trap errtrap

function errtrap {
    es=$?
    echo "`date` The script failed with exit status $es " | $log
}

Остальная часть сценария следует.

TRAP перехватит любую ошибку по любой команде и вызовет функцию errtrap . Для лучшего использования вы можете сделать функцию errtrap универсальной и вызывать ее в любом создаваемом вами скрипте.

1
05.01.2019, 07:00
2 ответа

Что ж, это несколько переработанное -решение Bash -, но оно работает и, надеюсь, проясняет использование команды parallel:

function xx(){ curl "https://jsonplaceholder.typicode.com/todos/$1" > "$1.txt";}
parallel xx -- {1..100}

Первая строка создает новую «команду» или функцию с именем xx, которая -при выполнении -вызывает выполнение команды curl, стандартный вывод которой перенаправляется в файл. Функция xxпринимает в качестве аргумента одно число; внутри тела функции он обозначается как `$1', т.е. первый позиционный параметр.

Вторая строка демонстрирует использование команды parallel, которая запускает xxодин раз для (и с )каждым аргументом из списка 1, 2, 3,..., 100 (список 1 2 3... 100 генерируется оболочкой, когда она выполняет расширение фигурной скобки на{1..100}).

ПРИМЕЧАНИЕ. :этот ответ относится к команде parallelв пакете moreutilsв системах Debian,не к команде GNU parallel.

3
27.01.2020, 23:14

Вот так:

parallel curl https://jsonplaceholder.typicode.com/todos/{} ">" {}.txt ::: {1..100}

Потратьте 20 минут на чтение глав 1+2 книги GNU Parallel 2018 (печатной:http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.htmlонлайн:https://doi.org/10.5281/zenodo.1146014). Ваша командная строка будет любить вас за это.

6
27.01.2020, 23:14

Теги

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