Saya menggunakan Mac OS X. Saya mencoba menyalin beberapa file dengan perintah cp untuk skrip build seperti ini.
cp ./src/*/*.h ./aaa
Tetapi perintah ini memunculkan kesalahan jika tidak ada file .h di direktori ./src. Bagaimana cara membuat perintah jangan memecat kesalahan? (silent silent) Kesalahan membuat hasil build gagal, tapi saya hanya ingin menyalin ketika hanya ada beberapa file header.
:
artinya dalam konteks ini.cp
(harus yang diinginkan). Shell builtintrue
bisa digunakan sebagai gantinya dan akan lebih mudah dibaca.:
- Apa Tujuan dari `: '(titik dua) GNU Bash Builtin?cp
tidak berada dalamPATH
entah bagaimana ...)Anda sedang mencari sesuatu di sepanjang baris
(Sayangnya,
-f
opsinya bukan droid yang Anda cari.)Jika Anda ingin mencocokkan bola dunia, itu tidak akan berhasil; gunakan
find
sebagai gantinya, misalnya:sumber
set -e
, dan file menghilang antara[
dancp
permintaan, skrip Anda akan macet).Pertanyaan lama, tetapi mungkin masih relevan untuk orang lain.
Jika Anda tidak perlu menggunakan cp, Anda bisa mencoba dengan rsync.
Untuk menyalin semua file dari sumber ke direktori tujuan, jalankan:
Rsync hadir dengan sebagian besar sistem mirip Unix seperti Linux, Mac OS X atau FreeBSD.
sumber
--ignore-missing-args
:rsync -av --ignore-missing-args ./src/*/*.h ./aaa
Ini memiliki keunggulan dibandingkan--ignore-errors
satu-satunya kesalahan yang diabaikan adalah yang terkait dengan file sumber yang tidak ada. Dengan--ignore-errors
setiap kesalahan diabaikan, yang mungkin berbahaya. Juga, perhatikan bahwa parameter ini cukup baru, jadi mungkin tidak ada di rsync versi lama.Memipipkan hasilnya ke true memastikan bahwa perintah akan selalu berhasil. Saya sudah mencoba ini di Linux tetapi tidak di Mac OS:
sumber
|
selalu dijalankan sementara||
hanya dilakukan jika terjadi kesalahan. Dantrue
biasanya biner sedangkan usus besar:
adalah builtin dan tidak mengkonsumsi PID.Anda bisa memaksakan status kesalahan yang benar. Dengan fungsi:
Diberikan sebagai berikut:
Salinan rutin akan menghasilkan kesalahan. Ini akan mengembalikan status keluar 1.
Jika kami menggunakan fungsi cpalways () di atas, kesalahan apa pun akan disembunyikan:
sumber