Khi tôi cố gắng thực thi mail
từ bên trong một hàm trong tập lệnh bash, nó sẽ tạo ra thứ gì đó tương tự như một quả bom ngã ba. Để làm rõ, điều này tạo ra vấn đề:
#!/bin/bash
mail() {
echo "Free of oxens" | mail -s "Do you want to play chicken with the void?" "example@example.org"
}
mail
exit 0
Đôi khi bạn có thể giết lệnh và nó sẽ giết các tiến trình con, nhưng đôi khi bạn sẽ phải thực hiện killall -9
.
Nó không quan tâm liệu thư đã được gửi hay chưa. Các quả bom ngã ba được tạo ra một trong hai cách. Và dường như không thêm bất kỳ kiểm tra nào cho mã thoát, chẳng hạn như if ! [ "$?" = 0 ]
, giúp.
Nhưng đoạn script bên dưới hoạt động như dự định, nó sẽ xuất ra lỗi hoặc nó sẽ gửi thư.
#!/bin/bash
echo "Free of oxens" | mail -s "Do you want to play chicken with the void?" "example@example.org"
exit 0
Lý do tại sao điều này xảy ra? Và làm thế nào bạn sẽ kiểm tra mã thoát của lệnh mail?