此程序运行良好,但如何使用相同的[un]命名管道方法从支持2个文件转到支持n
文件?
some_command \
<(tar c --xattrs -C "$1" --pax-option="exthdr.name=%d/PaxHeaders/%f" . | xxd) \
<(tar c --xattrs -C "$2" --pax-option="exthdr.name=%d/PaxHeaders/%f" . | xxd)
答案 0 :(得分:2)
不是使用进程替换语法,而是显式创建命名管道。 (进程替换是一种瞬态构造;您不能一次创建一个以节省以供以后使用。)
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[@]}"