Linux
crontab 和 echo 的奇怪問題
$ echo -e "test1\ntest2" > logfile $ echo -e "test1\ntest2" >> logfile $ cat logfile test1 test2 test1 test2 $ rm logfile $ crontab -e * * * * * echo -e "test1\ntest2" >> logfile $ sleep 160 $ cat logfile -e test1 test2 -e test1 test2
為什麼我得到
-e
輸出?crontab 和 bash 都在使用/bin/echo
他們可能不是都在使用
/bin/echo
. 使用的環境cron
可能與您的互動環境不同。指定完整路徑以確保。
這是人們推薦使用
printf
而不是echo
便攜性的原因之一。* * * * * printf "test1\ntest2\n" >> logfile
cron
使用的 shellsh
不是 Bash。在我的系統上,sh
真的是 Dash,它echo
沒有-e
. 所以-e
變成了另一個要輸出的字元串。其他版本的 Bourne shell 或提供其功能的 shell 可能具有-e
.如果您
echo
在沒有完整路徑的情況crontab
下echo
使用/bin/echo
. 在命令行上,如果您使用的是 Bash,那麼echo
沒有完整路徑會為您提供 Bash 的內置版本。