我正在尝试这个非常基本的东西,输出一个随机数:
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
答案 0 :(得分:1)
除了转义%
符号之外,正如F. Hauri指出的那样,cron
使用/bin/sh
运行命令,这不一定支持bash所做的所有功能。 / p>
* * * * * bash -c 'NUMBER=$[ ( $RANDOM \% 500 ) + 1 ]; echo $NUMBER > /tmp/out'
或者更好的是,将命令放入包含#!/bin/bash
的脚本中,然后执行crontab
中的脚本。
答案 1 :(得分:0)
你必须逃避%
签名:
* * * * * NUMBER=$[ ( $RANDOM \% 500 ) + 1 ]; echo $NUMBER > /tmp/out
或试试这个:
* * * * * echo > /tmp/out $((($(head -c2 /dev/urandom|od -An -tu2)/10\%500)+1))