如何在 bash 中制作命名管道

How to make named pipes in bash

该程序运行良好,但如何使用相同的 [un] 命名管道方法从支持 2 个文件变为支持 n 文件?

some_command \ 
    <(tar c --xattrs -C "" --pax-option="exthdr.name=%d/PaxHeaders/%f" . | xxd) \
    <(tar c --xattrs -C "" --pax-option="exthdr.name=%d/PaxHeaders/%f" . | xxd)

不使用进程替换语法,而是显式创建命名管道。 (进程替换是一种瞬态构造;您不能一次创建一个以保存以备后用。)

declare -a pipes
for arg in "$@"; do
    new_pipe_name=pipe$((++i))
    pipes+=( "$new_pipe_name" )
    mkfifo "$new_pipe_name"
    tar c --xattrs -C "$arg" --pax-option="exthdr.name=%d/PaxHeaders/%f" . | 
      xxd > "$new_pipe_name" &
done

mycommand "${pipes[@]}"
rm "${pipes[@]}"