Tôi có một tập lệnh mà tôi đã tìm thấy và tôi đang cố gắng để nó chạy, nó chỉ tải xuống và cài đặt các thư viện thời gian chạy Apache. Dòng đầu tiên là set -e
và nó gây ra lỗi; những gì set -e
làm gì?
Tôi có một tập lệnh mà tôi đã tìm thấy và tôi đang cố gắng để nó chạy, nó chỉ tải xuống và cài đặt các thư viện thời gian chạy Apache. Dòng đầu tiên là set -e
và nó gây ra lỗi; những gì set -e
làm gì?
Câu trả lời:
Nội dung này phức tạp đến mức nó xứng đáng với phần riêng của nó.
set cho phép bạn thay đổi các giá trị của các tùy chọn shell và đặt các tham số vị trí hoặc để hiển thị tên và giá trị của các biến shell.
các -e
tùy chọn
-e
Thoát ngay lập tức nếu một đường ống (xem Pipelines), có thể bao gồm một lệnh đơn giản (xem Lệnh đơn giản), lệnh con được đặt trong dấu ngoặc đơn (xem Nhóm lệnh) hoặc một trong các lệnh được thực thi như một phần của danh sách lệnh được bao quanh bởi dấu ngoặc nhọn (xem Nhóm lệnh) trả về trạng thái khác không. Shell không thoát nếu lệnh bị lỗi là một phần của danh sách lệnh ngay sau một thời gian hoặc cho đến khi từ khóa, một phần của kiểm tra trong câu lệnh if, một phần của bất kỳ lệnh nào được thực thi trong && hoặc || liệt kê ngoại trừ lệnh theo lệnh cuối cùng && hoặc ||, bất kỳ lệnh nào trong đường ống ngoại trừ lệnh cuối cùng hoặc nếu trạng thái trả về của lệnh đang được đảo ngược với !. Một cái bẫy trên ERR, nếu được đặt, được thực thi trước khi thoát khỏi shell.
Tùy chọn này áp dụng cho môi trường shell và từng môi trường lớp con riêng biệt (xem Môi trường thực thi lệnh) và có thể khiến các lớp con thoát ra trước khi thực hiện tất cả các lệnh trong lớp con.
Nguồn: www.gnu.org
Đã chỉnh sửa do nhận xét của @ psus bên dưới.
Ngoài ra, bạn có thể đọc trang hướng dẫn của bash
man bash
tại phần: SHELL BUILTIN THÔNG TIN
hoặc vấn đề
help set
cho một tin nhắn trợ giúp ngắn.
help set
và / hoặc man bash
là những người chính xác cho set
.
set -e
Nói tóm lại, khi nó ở đầu tập lệnh bash của bạn, hãy yêu cầu tập lệnh thoát ngay khi bất kỳ dòng nào trong tập lệnh bị lỗi (với một số ngoại lệ được liệt kê trong hướng dẫn sử dụng.) [1]
Là một tùy chọn gỡ lỗi, nó thường được sử dụng set -x
, đó là in từng dòng lệnh được mở rộng trước khi thực hiện bằng dấu "+". [2]
Tìm hiểu thêm tại:
[1] https://www.peterbe.com/plog/set-ex
[2] http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html
help set
và hướng dẫn bash đầy đủ làinfo bash
, nếu bạn đã cài đặt bash-doc.