in=$1; out=$2; combos=$3 list=($(<"$1")); function mix () { if (($1 < 1)) ; then echo "$2" else for x in "${list[@]}"; do echo "$(mix $(($1-1)) $x$2)"; done fi } mix $combos > $names