Câu hỏi "Echo" in các tùy chọn trong crontab


Tôi đang chạy Rasbian 3.12.26+ trên một mô hình Pi B.

Đây là những gì cron mục của tôi trông giống như:

* * * * * sleep 11; { echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php"; } >> /var/log/cron/calls.log

Đây là những gì đăng nhập của tôi trông giống như:

-en \e[1;4;33m
Thu Sep  4 14:29:13 UTC 2014
-en \e[0m
This is output from curl!

Tuy nhiên, khi tôi chỉ dán lệnh vào bash, nó hoạt động như dự định:

{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php"; } >> /var/log/cron/calls.log

Và đầu ra là

Thu Sep  4 14:27:51 UTC 2014
This is output from curl!

Với dòng đầu tiên gạch dưới, đậm và màu vàng như dự định.

Đối với một số lý do, khi chạy bởi một crontab, echo in "-en" thay vì dùng nó như một đối số. Kết quả là, các chuỗi thoát màu không bị thoát.

Đưa cái gì?


0
2017-09-04 14:42


gốc




Các câu trả lời:


Nó có lẽ là cron sử dụng / bin / sh. Xem cho chính mình bằng cách so sánh đầu ra sau đây:

/bin/sh -c '{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php" ; } > /tmp/1'

Ở trên tạo ra đầu ra bạn đang nhận được

/bin/bash -c '{ echo -en "\e[1;4;33m"; date; echo -en "\e[0m"; curl -k "http://sampleurl.com/update.php" ; } > /tmp/1'

Trong khi lệnh tương tự dưới bash tạo ra kết quả bạn muốn


2
2017-09-04 14:49



Làm thế nào tôi có thể thay đổi shell crontab nào thực thi? - Nikita240
thêm SHELL = / bin / bash lên trên cron của bạn - johnshen64
Một cách khác để có được trình tự thoát của bạn để tạo ra màu sắc là thay đổi echo (mà shell xử lý như một lệnh tích hợp) để /bin/echo (đó là một chương trình riêng biệt). (Nếu điều đó không hiệu quả, hãy thử /usr/bin/echo.) - G-Man