Bạn có thể thử một cái gì đó như:
#!/bin/sh
[ -n $1 ] || {
echo "Usage: $0 [url to file to get]" >&2
exit 1
}
wget $1
[ $? ] && {
echo "Could not download $1" | mail -s "Uh Oh" [email protected]
echo "Aww snap ..." >&2
exit 1
}
# If we're here, it downloaded successfully, and will exit with a normal status
Khi đưa ra một kịch bản mà sẽ (có thể) được gọi bởi các kịch bản khác, điều quan trọng là phải làm như sau:
- Đảm bảo lập luận tỉnh táo
- Gửi e-mail, viết thư cho một bản ghi, hoặc làm điều gì đó khác để ai đó biết những gì đã xảy ra
Các >&2
chỉ đơn giản là chuyển hướng đầu ra của các thông báo lỗi để stderror
, cho phép một kịch bản gọi điện thoại để làm một cái gì đó như thế này:
foo-downloader >/dev/null 2>/some/log/file.txt
Vì nó là một wrapper ngắn, không có lý do gì để từ bỏ một chút tỉnh táo :)
này cũng cho phép bạn chọn lọc trực tiếp sản lượng của wget
để /dev/null
, bạn thực sự có thể muốn nhìn thấy nó khi kiểm tra, đặc biệt là nếu bạn nhận được một e-mail nói rằng nó đã thất bại :)
Nguồn
2010-11-07 17:55:02
Ok .. bạn có thể cung cấp cho tôi một ví dụ hay không, vì vậy khi tệp được tải xuống, tập lệnh "OK" của người khác khác "FAILED" ... – CyberK
Đã thay đổi tập lệnh để OK và ĐƯỢC FAILED trong đó. Làm cho nó một ví dụ tốt hơn. – ojblass
@CyberK: Bạn cũng có thể muốn loại bỏ đầu ra của bộ lọc: 'wget $ 1 2>/dev/null' – thejh