Estou usando o Mac OS X. Estou tentando copiar alguns arquivos com o comando cp para um script de compilação como este.
cp ./src/*/*.h ./aaa
Mas este comando dispara um erro se não houver nenhum arquivo .h no diretório ./src. Como fazer o comando não disparar o erro? (falha silenciosa) O erro faz com que o resultado da compilação falhe, mas eu só quero copiar quando houver apenas algum arquivo de cabeçalho.
Se você está falando sobre a mensagem de erro, você pode suprimi-la enviando-a para o bucket de bits:
Se você deseja suprimir o código de saída e a mensagem de erro:
Você está procurando por algo ao longo das linhas de
(Infelizmente, a
-f
opção não é o droid que você está procurando.)Se você quiser combinar um glob, isso não funcionará; use
find
em vez disso, por exemplo:Pergunta antiga, mas ainda pode ser relevante para outros.
Se você não precisa usar cp, você pode tentar com rsync.
Para copiar todos os arquivos de uma origem para um diretório de destino, execute:
O Rsync vem com a maioria dos sistemas do tipo Unix, como Linux, Mac OS X ou FreeBSD.
Encaminhar o resultado para true garante que o comando sempre seja bem-sucedido. Eu tentei isso no Linux, mas não em qualquer Mac OS:
Você pode forçar o status de erro correto. Com uma função:
Dado o seguinte:
A cópia normal retornará um erro. Ele retornará um status de saída de 1.
Se usarmos a função cpalways() acima, quaisquer erros serão ocultados:
Isso funciona
$(cp ./src/*/*.h ./aaa | true)