Tôi đã đặt một dòng trong tập lệnh bash và muốn kiểm tra xem đường ống có dữ liệu hay không, trước khi đưa nó vào chương trình.
Tìm kiếm tôi tìm thấy test -t 0
nhưng nó không hoạt động ở đây. Luôn trả về sai. Vậy làm thế nào để chắc chắn rằng đường ống có dữ liệu?
Thí dụ:
echo "string" | [ -t 0 ] && echo "empty" || echo "fill"
Đầu ra: fill
echo "string" | tail -n+2 | [ -t 0 ] && echo "empty" || echo "fill"
Đầu ra: fill
Không giống như cách tiêu chuẩn / chính tắc để kiểm tra xem liệu đầu ra đường ống sản xuất ra? đầu vào cần được bảo tồn để chuyển nó vào chương trình. Điều này khái quát Làm thế nào để đầu ra đường ống từ quá trình này sang quá trình khác nhưng chỉ thực hiện nếu đầu tiên có đầu ra? trong đó tập trung vào việc gửi email.