0

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

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
4

1 回答 1

1

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

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

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

于 2013-02-01T23:23:51.350 回答