Вот демонстрация того, как вы могли бы заставить свою функцию работать:
$ f() { echo "[$@]"; }
$ export -f f
$ echo -e "b 1\nc 2\nd 3 4" | xargs -P 0 -n 1 -I{} bash -c f\ \{\}
[b 1]
[d 3 4]
[c 2]
Ключи к выполнению этой работы - export
функция, поэтому bash
, что xargs
spawns увидит это и выйдет из пробела между именем функции и экранированными скобками.Вы должны быть в состоянии приспособить это, чтобы работать в вашей ситуации.Вам нужно будет настроить аргументы для -P
и -n
(или удалить их) в соответствии с вашими потребностями.
Возможно, вы можете избавиться от grep
и cut
.Если вы используете встроенную в Bash time
, вы можете указать выходной формат, используя переменную TIMEFORMAT
.Если вы используете GNU /usr/bin/time
, вы можете использовать аргумент --format
.Любой из них позволит вам также сбросить -p
.
Вы можете заменить эту часть вашей команды wget
: 2>&1 1>/dev/null
на -q
.В любом случае, у вас есть обратное.Правильный порядок будет >/dev/null 2>&1
.