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 に答える