Eu tenho um script que analisa nomes de arquivos em uma matriz usando o seguinte método obtido de uma sessão de perguntas e respostas no SO :
unset ARGS
ARGID="1"
while IFS= read -r -d $'\0' FILE; do
ARGS[ARGID++]="$FILE"
done < <(find "$@" -type f -name '*.txt' -print0)
Isso funciona muito bem e lida com todos os tipos de variações de nome de arquivo perfeitamente. Às vezes, no entanto, passarei um arquivo inexistente para o script, por exemplo:
$ findscript.sh existingfolder nonexistingfolder
find: `nonexistingfile': No such file or directory
...
Em circunstâncias normais, o script capturaria o código de saída com algo parecido RET=$?
e o usaria para decidir como proceder. Isso não parece funcionar com a substituição do processo acima.
Qual é o procedimento correto em casos como este? Como posso capturar o código de retorno? Existem outras maneiras mais adequadas de determinar se algo deu errado no processo substituído?