我的基本命令在cron上失败,但在bash中运行良好

我的基本命令在cron上失败,但在bash中运行良好,bash,cron,debian,command-line-interface,sh,Bash,Cron,Debian,Command Line Interface,Sh,我正在尝试这个非常基本的东西,输出一个随机数: NUMBER=$[ ( $RANDOM % 500 ) + 1 ]; echo $NUMBER > /tmp/out 它可以直接在Debian中的CLI上正常运行,但当我尝试按原样对其进行cron时: * * * * * NUMBER=$[ ( $RANDOM % 500 ) + 1 ]; echo $NUMBER > /tmp/out 或者,在脚本的一部分,它以各种方式在我的电子邮件警报中始终失败,如下所示: /bin/sh:

我正在尝试这个非常基本的东西,输出一个随机数:

NUMBER=$[ ( $RANDOM % 500 )  + 1 ]; echo $NUMBER > /tmp/out
它可以直接在Debian中的CLI上正常运行,但当我尝试按原样对其进行cron时:

* * * * * NUMBER=$[ ( $RANDOM % 500 )  + 1 ]; echo $NUMBER > /tmp/out
或者,在脚本的一部分,它以各种方式在我的电子邮件警报中始终失败,如下所示:

/bin/sh: Syntax error: "(" unexpected
我很不习惯练习,所以我想这是显而易见的。我试过了我能想到的每一种括号式组合,但都没有成功。我错过了什么

我收到的完整邮件通知是:

From: Cron Daemon 
Sent: Friday, February 01, 2013 2:41 PM
Subject: Cron <root@host> NUMBER=$[ ( $RANDOM (failed)

/bin/sh: Syntax error: "(" unexpected
From:Cron守护进程
发送日期:2013年2月1日星期五下午2:41
主题:Cron NUMBER=$[($RANDOM(失败)
/bin/sh:语法错误:(“意外

正如F.Hauri指出的那样,除了转义
%
符号之外,
cron
还使用
/bin/sh
运行命令,这并不一定支持bash所具有的所有功能

* * * * * bash -c 'NUMBER=$[ ( $RANDOM \% 500 )  + 1 ]; echo $NUMBER > /tmp/out'

或者更好的方法是,将命令放入带有
#!/bin/bash
的脚本中,并从
crontab

/bin/sh
(cron的默认shell)执行脚本与您正在测试脚本的
bash
不同。如果您想要bash,请将该行保存在一个文件中,并让bash运行它:
***/bin/bash/home/you/your_file.sh
谢谢。这在几年前就已经很明显了。您忘记的事情……非常出色,谢谢!您和F.Hauri对她来说绝对是太棒了我希望你能澄清这一点。