Возможно. Вот функция, которая будет делать то, что вы просите.
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 }
Запустите это так:
$ permutate 1234
Это работает с помощью рекурсии. Каждый вызов функции берет один символ из строки и рекурсивно передает остаток самому себе. Поэтому, если вход 1234, он получает разбит на приставку и оставшийся сегмент в четыре раза, как это: 1 234
2 134
3 124
4 123
. Затем три символьных сегмента обрабатываются одинаково, затем два символьных сегмента, а затем рекурсия останавливается, когда сегмент состоит только из одного символа.