#!/bin/bash digits=(0 1 2) max=2 permute() { local d="" pad="" for d in "${digits[@]}"; do if ((${#1} < max)); then pad="$1$d" if ((${#pad} == max)); then echo "$pad" else permute "$pad" fi fi done } permute