É para fins de formatação.
$ p() { [ $# -eq 0 ] && echo || (shift; p "$@") |
> while read r ; do echo -e "$1 $r\n$r"; done }
$ p $(echo -e "1\n2\n3")
1 2 3
2 3
1 3
3
1 2
2
1
$ p
$
Observe a linha em branco entre o único p
e o próximo prompt. Isso é echo
.
Aqui está com mais legibilidade:
p() {
if [ $# -eq 0 ]; then
echo
else
(shift; p "$@") | while read r;
do echo -e "$1 $r\n$r";
done
fi
}
A razão pela qual você afirma que não funcionou sem isso é porque importa que algum comando esteja lá, caso contrário a lógica é quebrada (embora, como é, a lógica seja meio que estranho).