Apa yang dilakukan set -e?

28

Saya memiliki skrip yang saya temukan dan saya mencoba menjalankannya, hanya mengunduh dan menginstal pustaka runtime Apache. Baris pertama adalah set -edan menyebabkan kesalahan; apa yang set -eharus dilakukan

spitfiredd
sumber

Jawaban:

22

Builtin ini sangat rumit sehingga layak bagian sendiri.

set memungkinkan Anda untuk mengubah nilai opsi shell dan mengatur parameter posisi, atau untuk menampilkan nama dan nilai variabel shell.

The -epilihan

-e

Keluar segera jika saluran pipa (lihat Saluran Pipa), yang dapat terdiri dari satu perintah sederhana (lihat Perintah Sederhana), perintah subkulit yang dilampirkan dalam tanda kurung (lihat Pengelompokan Perintah), atau salah satu perintah yang dijalankan sebagai bagian dari daftar perintah yang dilingkupi oleh kurung kurawal (lihat Pengelompokan Perintah) mengembalikan status bukan nol. Shell tidak keluar jika perintah yang gagal adalah bagian dari daftar perintah segera setelah beberapa saat atau sampai kata kunci, bagian dari pengujian dalam pernyataan if, bagian dari perintah yang dieksekusi dalam && atau || daftar kecuali perintah yang mengikuti akhir && atau ||, perintah apa pun dalam pipa kecuali yang terakhir, atau jika status pengembalian perintah sedang dibalik dengan! Jebakan pada ERR, jika disetel, dieksekusi sebelum shell keluar.

Opsi ini berlaku untuk lingkungan shell dan setiap lingkungan sub-kulit secara terpisah (lihat Lingkungan Eksekusi Perintah), dan dapat menyebabkan subkulit keluar sebelum menjalankan semua perintah dalam subkulit.

Sumber: www.gnu.org

Diedit karena komentar @ psusi di bawah ini.

Selain itu Anda dapat membaca halaman manual bash

man bash 

di bagian: SHELL BUILTIN COMMANDS

atau masalah

help set 

untuk pesan bantuan singkat.

NickTux
sumber
1
Karena ini adalah perintah bawaan, Anda ingin help setdan manual bash lengkapnya adalah info bash, jika Anda telah menginstal bash-doc.
psusi
Terima kasih atas klarifikasi @psusi. help setdan / atau man bashyang benar untuk set.
NickTux
12

set -e singkatnya, ketika berada di bagian atas skrip bash Anda, suruh skrip untuk keluar segera setelah baris apa pun dalam skrip gagal (dengan beberapa pengecualian tercantum dalam manual.) [1]

Sebagai opsi debug, ini sering digunakan dengan set -x, yaitu mencetak setiap baris perintah yang diperluas sebelum dieksekusi dengan tanda "+". [2]

Lihat selengkapnya di:

[1] https://www.peterbe.com/plog/set-ex

[2] http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html

Devy
sumber
2
Terima kasih atas penjelasan sederhana. Saya sering melihat set -xe di Dockerfiles dan sekarang saya tahu alasannya :)
ymakux