#!/bin/zsh : ${delim:=---} cmd=$1 inputs=( "$(mktemp)" ) while IFS= read line; do if [[ $line == $delim ]]; then inputs+=( "$(mktemp)" ) else printf '%s\n' $line >>$inputs[-1] fi done for n in $(seq 1 $#inputs); do cmd=${cmd//@${n}@/${(qqq)inputs[$n]}} done eval $cmd ret=$? rm $inputs exit $ret