Вы можете сделать это, экспортировав функцию в среду, которая доступна для вспомогательной оболочки, запущенной через split.Например, с bash:
ex.sh
#!/bin/bash
my_func() {
echo $1
}
export -f my_func
seq inf | split -d --filter='my_func $FILE' /dev/stdin chunk_
Если вы запустите его так:
bash ex.sh | head
Вывод:
chunk_00
chunk_01
chunk_02
chunk_03
chunk_04
chunk_05
chunk_06
chunk_07
chunk_08
chunk_09
Подробнее в этот ответ в UL.
Обратите внимание, что split
использует любую переменную SHELL
, которая установлена в качестве вспомогательной оболочки для запускакоманда --filter
.Если вы используете другую оболочку, вам может потребоваться добавить export SHELL=/bin/bash
перед запуском split
.