解释器指令之前的#!
行 - 行之前 - 是错误的,但可能不是您的问题。仅作为可执行文件的前两个字符是特殊的#!
,并标识应该打开它的程序(/bin/bash
在这种情况下)。shell 会倾向于通过默认自己来解释脚本,但这并不可靠——尤其是对于非 sh 脚本。
其次,http://www.talisman.org/~erlkonig/documents/commandname-extensions-considered-harmful
所以在/custom/update
#!/bin/bash
# update
/usr/bin/freshclam
maldet -b -a /home
然后运行:chmod +x /custom/update
在./doandmail
:
#!/bin/bash
# doandmail
SUBJECT="Shell Script" # these don't need to be uppercase
EMAIL="myemail@gmail.com" # ...though it doesn't hurt anything
EMAILMESSAGE="mail.txt" # usually only exported variable are upper.
/custom/update | /bin/mail -s "$SUBJECT" "$EMAIL" # no need for a tmp file.
然后:chmod +x doandmail
当你crontab
运行时,它不会有你正在考虑的相同目录,甚至你可能期望的相同环境,除非你明确地设置它们。它最有可能在./update
... 中的行上中断doandmail
。因此/custom/update
以上。
在您的 crontab 中:
@hourly /custom/doandmail