Estou usando o Mac OS X. Estou tentando copiar alguns arquivos com o comando cp para um script de construção como este.
cp ./src/*/*.h ./aaa
Mas este comando dispara um erro se não houver 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.
:
significa neste contexto.cp
(caso isso seja desejado). O shell embutidotrue
poderia ser usado e seria mais legível.:
- Qual é o objetivo do `: '(dois pontos) GNU Bash Builtin?cp
não está dePATH
alguma forma ...)Você está procurando algo ao longo das linhas de
(Infelizmente, a
-f
opção não é o droid que você está procurando.)Se você quiser combinar com uma glob, isso não funcionará; use em
find
vez disso, por exemplo:fonte
set -e
e o arquivo desaparecer entre[
ascp
chamadas e o invocador, seu script falhará).Pergunta antiga, mas ainda pode ser relevante para os outros.
Se você não precisar usar o cp, tente com o rsync.
Para copiar todos os arquivos de uma origem para um diretório de destino, execute:
O Rsync vem com a maioria dos sistemas Unix, como Linux, Mac OS X ou FreeBSD.
fonte
--ignore-missing-args
:rsync -av --ignore-missing-args ./src/*/*.h ./aaa
Isso tem a vantagem de--ignore-errors
que os únicos erros ignorados são aqueles relacionados a arquivos de origem que não existem. A--ignore-errors
cada erro é ignorado, o que pode ser perigoso. Além disso, leve em consideração que esse parâmetro é relativamente recente, portanto, pode não estar presente nas versões antigas do rsync.Canalizar o resultado como true garante que o comando sempre seja bem-sucedido. Eu tentei isso no Linux, mas não em nenhum Mac OS:
fonte
|
é sempre executado enquanto||
é feito apenas em caso de erro. Etrue
geralmente é um binário, enquanto o cólon:
está embutido e não consome um PID.Você pode forçar o status de erro correto. Com uma função:
Dado o seguinte:
A cópia regular retornará um erro. Ele retornará um status de saída 1.
Se usarmos a função cpalways () acima, quaisquer erros serão ocultados:
fonte