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