permutar a,b,c:

saida: abc acb bac bca cab cba

--------------------------------------%<--------------------------------------
#!/bin/bash

v=eval
e=echo
s=sed
r=( a b c );
_c()
{
        for ((i=0; i<${#r[*]}; i++)); do

                for c in ${r[*]}; do
                        o=$o$c','
                done

                t=$t'{'$($e $o| $s 's/,$//')'}'
                o=''
        done

        $v $e $t |
        $s -r "
s/(${r[0]}${r[0]}${r[0]}|[^${r[0]}]${r[0]}${r[0]}|${r[0]}[^${r[0]}]${r[0]}|${r[0]}${r[0]}[^${r[0]}]|${r[0]}${r[0]}${r[0]})\>//g;
s/(${r[1]}${r[1]}${r[1]}|[^${r[1]}]${r[1]}${r[1]}|${r[1]}[^${r[1]}]${r[1]}|${r[1]}${r[1]}[^${r[1]}]|${r[1]}${r[1]}${r[1]})\>//g;
s/(${r[2]}${r[2]}${r[2]}|[^${r[2]}]${r[2]}${r[2]}|${r[2]}[^${r[2]}]${r[2]}|${r[2]}${r[2]}[^${r[2]}]|${r[2]}${r[2]}${r[2]})\>//g;
"
}

_c| sed 's/\s\+/ /g;s/ //'
--------------------------------------%<--------------------------------------

ou

v=eval; e=echo; s=sed; r=( a b c ); _c() { for ((i=0; i<${#r[*]};
i++)); do for c in ${r[*]}; do o=$o$c','; done; t=$t'{'$($e $o| sed
's/,$//')'}';o='';done; $v $e $t | $s -r "
s/(${r[0]}${r[0]}${r[0]}|[^${r[0]}]${r[0]}${r[0]}|${r[0]}[^${r[0]}]${r[0]}|${r[0]}${r[0]}[^${r[0]}]|${array[0]}${array[0]}${array[0]})\>//g;
s/(${r[1]}${r[1]}${r[1]}|[^${r[1]}]${r[1]}${r[1]}|${r[1]}[^${r[1]}]${r[1]}|${r[1]}${r[1]}[^${r[1]}]|${array[1]}${array[1]}${array[1]})\>//g;
s/(${r[2]}${r[2]}${r[2]}|[^${r[2]}]${r[2]}${r[2]}|${r[2]}[^${r[2]}]${r[2]}|${r[2]}${r[2]}[^${r[2]}]|${array[2]}${array[2]}${array[2]})\>//g;
"; }; _c| $s 's/\s\+/ /g;s/ //'

Responder a