Usando a sugestão de Stephen Kitt nos comentários:
find . -type f -iname "*.sh" -exec sh -c 'for n; do ./testScripts.sh "$n" || exit 1; done' sh {} +
Isso fará com que o script sh -c
saia com um status de saída diferente de zero, assim como testScript.sh
. Isso significa que find
também sairá com um status de saída diferente de zero:
If terminated by a plus sign, the pathnames for which the primary is evaluated are aggregated into sets, and utility will be invoked once per set, similar to
xargs(1)
. If any invocation exits with a non-zero exit status, thenfind
will eventually do so as well, but this does not causefind
to exit early.
Com relação às perguntas no comentário:
-
for n; do ... ; done
parece estranho, mas faz sentido quando você percebe que sem nada para iterar, ofor
irá iterar sobre"$@"
implicitamente. -
O
sh
final no final será colocado em$0
do shellsh -c
. O{}
será substituído por um número de caminhos. Semsh
, o primeiro nome de caminho terminaria em$0
e não seria escolhido pelo loop, já que não está em$@
.$0
geralmente contém o nome do intérprete atual (bem, seu valor é arbitrário, algumas pessoas usam_
aqui).