Вы можете определить функцию перехвата для перехвата любой ошибки, возникающей в сценарии.
#!/usr/bin/ksh
trap errtrap
function errtrap {
es=$?
echo "`date` The script failed with exit status $es " | $log
}
Остальная часть сценария следует.
TRAP перехватит любую ошибку по любой команде и вызовет функцию errtrap
. Для лучшего использования вы можете сделать функцию errtrap
универсальной и вызывать ее в любом создаваемом вами скрипте.
Что ж, это несколько переработанное -решение 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
.
Вот так:
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). Ваша командная строка будет любить вас за это.