set -o Pipefail membuat skrip shell mengembalikan status keluar perintah gagal terakhir dalam saluran paip, memastikan kesilapan tidak tersembunyi. 1. Secara lalai, Bash hanya melaporkan kod keluar perintah terakhir dalam saluran paip, walaupun arahan terdahulu gagal. 2. Dengan set -o pipefail diaktifkan, shell sebaliknya mengembalikan kod keluar perintah gagal pertama, atau 0 jika semua berjaya. 3. Ini membantu menangkap kesilapan senyap dalam skrip automasi, terutamanya apabila digabungkan dengan set -E untuk menghentikan pelaksanaan pada sebarang kegagalan. 4. 5. Ia boleh dilumpuhkan buat sementara waktu dalam skrip jika kegagalan saluran paip tertentu dijangka dan harus diabaikan.
Apabila anda bekerja dengan skrip shell, terutamanya dalam persekitaran di mana kebolehpercayaan dan kesilapan pengendalian perkara, set -o pipefail
menjadi alat yang berguna. Tanpa itu, saluran paip boleh menyembunyikan kegagalan - bermakna jika satu bahagian rantai gagal tetapi arahan terakhir berjaya, saluran paip keseluruhan kelihatan seperti ia berfungsi. Itu sering bukan apa yang anda mahukan.
Apa yang sebenarnya dilakukan oleh set -o pipefail
?
Secara lalai, Bash melaporkan status keluar perintah terakhir dalam saluran paip. Jadi, walaupun perintah terdahulu dalam saluran paip gagal, selagi yang terakhir berjaya, hasil keseluruhan saluran paip dianggap sebagai kejayaan.
Contohnya:
grep "ralat"/var/log/syslog | Susun | uniq
Jika grep
gagal (katakan, kerana /var/log/syslog
tidak wujud), tetapi sort
dan uniq
berjalan dengan baik, keseluruhan saluran paip akan mengembalikan kod keluar 0 - menunjukkan kejayaan. Itu boleh mengelirukan.
Mengaktifkan set -o pipefail
mengubah tingkah laku ini: shell sebaliknya akan mengembalikan status keluar perintah terakhir yang gagal , atau 0 jika semua arahan berjaya.
Ini menjadikannya lebih mudah untuk menangkap kesilapan sebenar dalam skrip anda.
Mengapa anda harus mengambil berat tentangnya dalam skrip
Dalam skrip automasi dan penempatan, kegagalan senyap berbahaya. Anda mungkin berfikir segala -galanya berjalan lancar, tetapi pada hakikatnya, beberapa langkah kritikal secara senyap -senyap gagal.
Menggunakan set -o pipefail
membantu memastikan kegagalan dalam saluran paip diperhatikan. Apabila digabungkan dengan set -e
(yang keluar pada sebarang kesilapan), ia menjadi cara yang kukuh untuk menguatkuasakan pemeriksaan ralat yang ketat.
Senario praktikal:
set -eo pipefail curl -s http://example.com/data | jq '.importantfield'
- Jika
curl
gagal (contohnya, isu rangkaian), skrip berhenti dengan segera. - Jika
jq
gagal (contohnya, JSON tidak sah), skrip juga berhenti.
Tanpa pipefail
, kegagalan dalam curl
boleh bertopeng, dan skrip akan terus berjalan - berpotensi membawa kepada hasil yang mengelirukan atau pemprosesan data yang salah.
Cara menggunakannya dengan berkesan
Untuk membolehkannya, tambahkan garis ini di bahagian atas skrip bash anda:
set -o pipefail
Atau gunakan versi yang lebih pendek:
set -o pipefail
Beberapa petua untuk menggunakannya dengan baik:
- Sentiasa pasangkannya dengan
set -e
atau periksa kod keluar secara manual. - Ketahui bahawa tidak semua kerang menyokongnya - ia berfungsi di Bash dan ZSH, tetapi tidak di SH atau Dash secara lalai.
- Jika anda menulis skrip mudah alih, uji bagaimana persekitaran sasaran anda mengendalikannya.
Anda juga boleh melumpuhkannya secara sementara dalam skrip jika diperlukan:
Tetapkan o pipefail # melumpuhkannya # Jalankan beberapa saluran paip khas di sini set -o pipefail # boleh dimuat semula
Ini boleh membantu apabila berurusan dengan arahan di mana kegagalan di tengah -tengah saluran paip dijangka dan harus diabaikan.
Itulah pada dasarnya apa yang set -o pipefail
adalah untuk -menangkap kesilapan sebenar dalam saluran paip supaya skrip anda tidak terlepasnya. Ia adalah bendera kecil, tetapi ia membuat perbezaan besar dalam membuat skrip shell lebih mantap.
Atas ialah kandungan terperinci Apakah tujuan set -o pipefail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cangkang terbuka tidak berjalan pada Windows 11 bukanlah masalah baharu dan telah membelenggu pengguna sejak kemunculan sistem pengendalian baharu ini. Punca isu Open-Shell Windows 11 tidak berfungsi adalah tidak khusus. Ia boleh disebabkan oleh ralat yang tidak dijangka dalam program, kehadiran virus atau perisian hasad, atau fail sistem yang rosak. Bagi mereka yang tidak tahu, Open-Shell ialah pengganti Classic Shell, yang telah dihentikan pada tahun 2017. Anda boleh menyemak tutorial kami tentang cara memasang Classic Shell pada Windows 11. Bagaimana untuk menggantikan menu Mula Windows 11

<p>Menyesuaikan sistem pengendalian anda ialah cara terbaik untuk menjadikan kehidupan harian anda lebih menyeronokkan. Anda boleh menukar antara muka pengguna, menggunakan tema tersuai, menambah widget dan banyak lagi. Jadi hari ini kami akan menunjukkan kepada anda cara memasang ClassicShell pada Windows 11. </p><p>Program ini telah wujud sejak sekian lama dan membolehkan anda mengubah suai sistem pengendalian. Sukarelawan kini telah mula menjalankan organisasi itu, yang dibubarkan pada 2017. Projek baharu ini dipanggil OpenShell dan kini tersedia di Github untuk mereka yang berminat. </p>&a

Adakah anda melihat mesej ralat ini "Add-AppxPackage: Deployment failed with HRESULT: 0x80073D02, Pakej tidak boleh dipasang kerana sumber yang diubah suai sedang digunakan. Ralat 0x80073D02..." dalam PowerShell apabila anda menjalankan skrip? Seperti yang dinyatakan oleh mesej ralat, ini berlaku apabila pengguna cuba mendaftar semula satu atau semua aplikasi WindowsShellExperienceHost semasa proses sebelumnya sedang berjalan. Kami mempunyai beberapa penyelesaian mudah untuk menyelesaikan masalah ini dengan cepat. Betulkan 1 – Tamatkan proses hos pengalaman yang anda mesti tamatkan sebelum melaksanakan perintah powershell

Windows Subsystem untuk Linux Pilihan pertama ialah menggunakan Windows Subsystem untuk Linux atau WSL, yang merupakan lapisan keserasian untuk menjalankan boleh laku binari Linux secara asli pada sistem Windows. Ia berfungsi untuk kebanyakan senario dan membolehkan anda menjalankan skrip shell dalam Windows 11/10. WSL tidak tersedia secara automatik, jadi anda mesti mendayakannya melalui tetapan pembangun peranti Windows anda. Anda boleh melakukan ini dengan pergi ke Tetapan > Kemas Kini & Keselamatan > Untuk Pembangun. Tukar ke mod pembangun dan sahkan gesaan dengan memilih Ya. Seterusnya, cari W

OpenShell ialah utiliti perisian percuma yang boleh digunakan untuk menyesuaikan menu Mula Windows 11 agar menyerupai menu gaya klasik atau menu gaya Windows 7. Menu Mula pada versi Windows terdahulu menyediakan pengguna dengan cara mudah untuk menyemak imbas kandungan sistem mereka. Pada asasnya, OpenShell ialah pengganti ClassicShell yang menyediakan elemen antara muka pengguna berbeza yang membantu mendapatkan kefungsian versi terakhir daripada versi Windows sebelumnya. Sebaik sahaja pembangunan ClassicShell dihentikan pada 2017, ia dikekalkan dan dibangunkan oleh sukarelawan GitHub di bawah nama OpenShell. Ia berkaitan dengan Win
![Explorer.exe tidak bermula pada permulaan sistem [Betulkan]](https://img.php.cn/upload/article/000/887/227/168575230155539.png?x-oss-process=image/resize,m_fill,h_207,w_330)
Pada masa kini, ramai pengguna Windows mula menghadapi masalah sistem Windows yang serius. Masalahnya ialah Explorer.exe tidak boleh bermula selepas sistem dimuatkan dan pengguna tidak boleh membuka fail atau folder. Walaupun, pengguna Windows boleh membuka Windows Explorer secara manual menggunakan Command Prompt dalam beberapa kes dan ini mesti dilakukan setiap kali sistem dimulakan semula atau selepas permulaan sistem. Ini boleh menjadi masalah dan disebabkan oleh faktor-faktor berikut yang dinyatakan di bawah. Fail sistem rosak. Dayakan tetapan permulaan pantas. Pemacu paparan lapuk atau bermasalah. Perubahan telah dibuat pada beberapa perkhidmatan dalam sistem. Fail pendaftaran yang diubah suai. Dengan mengingati semua faktor di atas, kami telah menghasilkan beberapa yang pasti akan membantu pengguna

Beberapa contoh skrip Python: penggera WeChat perusahaan, pelanggan FTP, pelanggan SSH, pelanggan Saltstack, pelanggan vCenter, mendapatkan masa tamat sijil SSL nama domain, menghantar ramalan cuaca hari ini dan carta arah aliran cuaca masa hadapan: Sandaran penuh SVN; Zabbix memantau tamat tempoh kata laluan pengguna, membina YUM tempatan, dan keperluan pembaca disebut dalam artikel sebelumnya (apabila beban tinggi, cari skrip proses yang menduduki penghunian yang agak tinggi dan simpan atau pemberitahuan tolak, jadi harap bersabar Di akhir artikel, terdapat telur Paskah selepas semua. Skrip Python sebahagian daripada penggera WeChat perusahaan Skrip ini menggunakan aplikasi WeChat perusahaan untuk melaksanakan penggera WeChat dan boleh digunakan

Apabila memproses fail di bawah sistem Linux, kadangkala perlu memadamkan baris pada penghujung fail. Operasi ini sangat biasa dalam aplikasi praktikal dan boleh dicapai melalui beberapa arahan mudah. Artikel ini akan memperkenalkan langkah-langkah untuk memadamkan baris dengan cepat pada penghujung fail dalam sistem Linux dan memberikan contoh kod khusus. Langkah 1: Semak baris terakhir fail Sebelum melakukan operasi pemadaman, anda perlu mengesahkan baris mana yang merupakan baris terakhir fail. Anda boleh menggunakan arahan tail untuk melihat baris terakhir fail Arahan khusus adalah seperti berikut: tail-n1filena
