web-dev-qa-db-ja.com

Cronジョブはシェルスクリプト関数に読み込まれません

Cronジョブがスクリプトを実行していて、関数を読み取らないという奇妙な状況にあります。ええ、太陽フレア。

深刻なことに、私の環境のスキャンを起動する.shスクリプトがあるという考えです。以下にその抜粋を示します。スクリプトにより出力ファイルが正常に作成され、出力にこの行echo "Is this line parsed or not?" >> $outputが見つかります。ただし、関数echo "I'm in the function!" >> $outputにある次のエコーは記録されません。スクリプトは関数宣言で停止し、それで終わりです。

私は困惑しています。何か案は?ありがとう!

.....
    touch $output
    # with this we are creating an empty file

    echo "Is this line parsed or not?" >> $output

    function do_the_scan() {
    # Load text file lines into a bash array.
    echo "I'm in the function!" >> $output
.....
1
will

関数宣言の構文が間違っています。以下を使用する必要があります。

do_the_scan() {
    # Load text file lines into a bash array.
    echo "I'm in the function!" >> $output
}

functionbashism であるため、スクリプトがBashで実行されない限り。

これは、対話型シェルでのエラーのデモです。

> sh
$ function bar() {
sh: 1: Syntax error: "(" unexpected
$

とにかく、スクリプトのエラー出力を 標準エラー出力のリダイレクト (例:2> err.log)を使用してキャプチャする必要があります。 crontabのコマンドの行に直接配置して、スクリプトのインタープリターによって生成されたエラーをキャプチャできるようにします。

こちらもご覧ください

4
Melebius