Tôi đang sử dụng câu lệnh "exit 1" trong các hàm bash của mình để chấm dứt toàn bộ tập lệnh và nó hoạt động tốt:
function func()
{
echo "Goodbye"
exit 1
}
echo "Function call will abort"
func
echo "This will never be printed"
Nhưng sau đó tôi nhận ra rằng nó không hoạt động khi được gọi như:
res=$(func)
Tôi hiểu rằng tôi đã tạo một vỏ con và "thoát 1" hủy bỏ vỏ con đó chứ không phải là vỏ chính ....
Nhưng có cách nào để viết một hàm hủy bỏ toàn bộ quá trình thực thi, bất kể nó được gọi như thế nào không? Tôi chỉ cần lấy giá trị trả về thực (được lặp lại bởi hàm).
setsid()
hàm C , nhưng nó không hoạt động theo cách hoàn toàn giống nhau. Đã cập nhật để không sử dụngsetsid
lệnh, vì nó sẽ yêu cầu chúng tôi bắt đầu một quy trình mới.