Я использую Mac OS X. Я пытаюсь скопировать некоторые файлы с помощью команды cp для сценария сборки, подобного этому.
cp ./src/*/*.h ./aaa
Но эта команда выдает ошибку, если в каталоге ./src нет файла .h. Как заставить команду не выдавать ошибку? (тихий сбой) Ошибка приводит к сбою результата сборки, но я просто хочу скопировать, когда есть только заголовочный файл.
:
значит в этом контексте.cp
(если это желательно).true
Вместо этого можно использовать встроенную оболочку, которая будет более читабельной.:
- Какова цель `: '(двоеточие) GNU Bash Builtin?cp
отсутствуетPATH
каким-либо образом ...)Вы ищете что-то вроде
(К сожалению,
-f
опция не та, которую вы ищете.)Если вы хотите сопоставить глобус, это не сработает; использовать
find
вместо этого, например:источник
set -e
файл, и файл исчезает между вызовами[
иcp
, ваш сценарий будет аварийно завершаться).Старый вопрос, но все еще может быть актуальным для других.
Если вам не нужно использовать cp, вы можете попробовать использовать rsync.
Чтобы скопировать все файлы из исходного каталога в каталог назначения, запустите:
Rsync поставляется с большинством Unix-подобных систем, таких как Linux, Mac OS X или FreeBSD.
источник
--ignore-missing-args
:rsync -av --ignore-missing-args ./src/*/*.h ./aaa
Это дает преимущество в--ignore-errors
том, что игнорируются только ошибки, связанные с несуществующими исходными файлами. При этом--ignore-errors
каждая ошибка игнорируется, что может быть опасно. Также примите во внимание, что этот параметр довольно недавний, поэтому он может отсутствовать в старых версиях rsync.Передача результата в true гарантирует, что команда всегда будет успешной. Я пробовал это на Linux, но не на любой Mac OS:
источник
|
всегда запускается, а||
выполняется только в случае ошибки. Иtrue
, как правило, в то время как бинарное двоеточие:
является встроенной и не потребляет PID.Вы можете вызвать правильный статус ошибки. С функцией:
Учитывая следующее:
Обычная копия вернет ошибку. Будет возвращено состояние выхода 1.
Если мы используем функцию cpalways () выше, любые ошибки будут скрыты:
источник