Tôi có một tập lệnh bash mà tôi muốn im lặng khi chạy mà không có tty đính kèm (như từ cron). Tôi hiện đang tìm cách chuyển hướng đầu ra thành/dev/null theo một cách có điều kiện. Đây là một ví dụ về những gì tôi đã có trong tâm trí, nhưng tôi sẽ có nhiều lệnh hơn là làm ra trong kịch bảnchuyển hướng có điều kiện trong bash
#!/bin/bash
# conditional-redirect.sh
if tty -s; then
REDIRECT=
else
REDIRECT=">& /dev/null"
fi
echo "is this visible?" $REDIRECT
Thật không may, điều này không làm việc:
$ ./conditional-redirect.sh
is this visible?
$ echo "" | ./conditional-redirect.sh
is this visible? >& /dev/null
những gì tôi don' t muốn làm là sao chép tất cả các lệnh trong một với-chuyển hướng hoặc với-no-chuyển hướng biến thể:
if tty -s; then
echo "is this visible?"
else
echo "is this visible?" >& /dev/null
fi
EDIT:
Sẽ là tuyệt vời nếu giải pháp sẽ cung cấp cho tôi cách để xuất ra nội dung nào đó ở chế độ "yên tĩnh", ví dụ: khi một cái gì đó thực sự sai, tôi có thể muốn nhận được thông báo từ cron.
Vâng, đó là các công trình ! (Hoặc thậm chí đơn giản hơn 'exec &>/dev/null') –
.. nhưng nó có nhược điểm là tất cả đầu ra bị mất trong chế độ" yên tĩnh "; có thể có những tình huống mà tôi thực sự muốn tạo ra thứ gì đó, ngay cả trong chế độ xếp hàng; xem câu hỏi được nâng cấp. –
Điểm tốt, @daniel, tôi nhận được một chút dài trong răng và thói quen cũ chết cứng nhưng tôi đã cập nhật câu trả lời bằng cách sử dụng ưa thích của bạn. – paxdiablo