
declare pre stu begin end=$1 file args=( "${@:2}" ) cmd{pre,stu} i=-1

eval -- "
$pre
$begin
"

while [[ -v args[++i] ]] && file=${args[i]} ; do
 [[ ! -f $file ]] && continue
 eval -- "
$cmdpre
$cmd
$cmdstu
"
done

eval -- "
$end
$stu
"
 
