Es ist möglich. Hier ist eine Funktion, die das tut, was Sie fragen.
function permutate { if [ "${#1}" = 1 ]; then echo "$$" else for i in $(seq 0 $((${#1}-1)) ); do pre="$$" seg1="$" seg2="$" seg="$$" permutate "$seg" "$pre" done fi }
Führen Sie es so aus:
$ permutate 1234
Es funktioniert mit Rekursion. Jeder Aufruf der Funktion nimmt ein Zeichen aus der Zeichenfolge und übergibt den Rest rekursiv an sich. Also, wenn der Eingang 1234 ist, wird es in einen Präfix aufgebrochen und verbleibende Segment viermal so: 1 234
2 134
3 124
4 123
. Die drei Zeichensegmente werden dann gleich behandelt, dann die beiden Zeichensegmente und die Rekursion wird angehalten, wenn das Segment nur aus einem Zeichen besteht.