Shell

當源文件不存在時如何讓’cp’命令不觸發錯誤?

  • March 29, 2021

我正在使用 Mac OS X。我正在嘗試使用 cp 命令為這樣的建構腳本複制一些文件。

cp ./src/*/*.h ./aaa

但是,如果 ./src 目錄中沒有 .h 文件,則此命令會引發錯誤。如何使命令不觸發錯誤?(靜默失敗)錯誤使建構結果失敗,但我只想在只有一些標頭檔時複製。

如果您正在談論錯誤消息,您可以通過將其發送到位桶來抑制它:

cp ./src/*/*.h ./aaa 2>/dev/null

如果要禁止退出程式碼和錯誤消息:

cp ./src/*/*.h ./aaa 2>/dev/null || :

你正在尋找類似的東西

if [ -e file ]
then cp file /somewhere
fi

(不幸的是,這個-f選項不是你要找的機器人。)

如果你想匹配一個 glob,那是行不通的;改為使用find,例如:

find ./src -name \*.h -exec cp {} ./destination \;

引用自:https://serverfault.com/questions/153875