#!/usr/bin/env bash set -e set -o pipefail function prepare() { fname="$1" ext="${fname##*.}" base="${fname:0:${#fname}-${#ext}-1}" case "$ext" in py) echo "./$fname" ;; c|cpp) make "$base" 2>&1 | grep -v 'is up to date' >&2 echo "./$base" ;; rip) echo "rip $fname" ;; *) echo >&2 "No handler for file '$fname'!" exit 1 esac } for i in $(seq 1 25); do for a in a b; do exe="" for fname in $i$a.{py,c,cpp,rip}; do test -f $fname || continue cmd="$(prepare "$fname")" echo -n "$i$a: \"$cmd\" " diff <($cmd <$i.in 2>/dev/null) $i$a.out echo ok done done done