O problema é que suas variáveis estão sendo expandidas pelo bash antes que o find seja executado. Por causa disso $a
é expandido para 0, $$
é expandido para o PID do seu shell (login), então o comando que é executado por bash -xc
é, na verdade:
echo 0 {} ;((a++)) ; echo 0 1314
Aqui {}
é substituído por xargs com o resultado de find
e o valor de $a
é pós-incrementado, mas nunca é impresso. Tente escapar as variáveis (como em \$a
), ou melhor ainda, colocando os argumentos bash -xc
entre aspas simples ( '
) em vez de aspas duplas ( "
) para ver se funciona.
Você também notará que os outros comentadores estão corretos, xargs -n1
(ou com -I{}
) executa um novo shell para cada argumento, portanto, incrementar $a
não funcionará - o valor incrementado não será visível para o próxima invocação do comando bash -xc
.