Ошибка сценария скрипта crontab

Я пытаюсь запустить этот скрипт каждый день, используя crontb:

#/bin/bash
cd /home/banana/gdrive
DATE=`date +%Y-%m-%d`
mongodump  --gzip --archive=$DATE
./gdrive upload ./$DATE

olddate="$(date "+%Y-%m-%d" -d "9 days ago")"
old2=$(date -d $olddate +%s)
#echo $old2
list="$(./gdrive list)"
#echo $list
ADDR=(${list// / })
ii=0
for i in "${ADDR[@]:5}"; do
    if [ $(($ii % 7)) -eq 0 ]; then
       id=$i
    fi
    if [ $(($ii % 7)) -eq 1 ]; then
       name=$i
       dat=$(date -d $name +%s)
       #echo $dat
       if [ $old2 -ge $dat ]; then
          echo "delete"
          echo $id
          touch $id
          ./gdrive delete $id
       fi
       #echo "name"
       #echo $name
       #echo $id
    fi
    #echo $ii
    #echo $i
    let ii=ii+1
done

crontab entry:

0 2 * * * /home/banana/gdrive/upload.sh

сценарий отлично работает, если обедать в bash, если он запущен crontab, он не доходит до конца, даже если я не могу найти какую-либо зарегистрированную ошибку где угодно.

Путем моделирования использования среды crontab, как предлагается здесь: https://serverfault.com/questions/85893/running-a-cron-job-manually-and-immediately/85906

я обнаружил, что выполнение приводит к ошибке:

gdrive/upload.sh: 12: gdrive/upload.sh: Syntax error: "(" unexpected

, учитывая тот факт, что переменная SHELL в среде crontab была установлена ​​в SHELL = / bin / sh и что синтаксис там bash этот звук вполне разумный (даже если я все еще запутался в роли # / bin / bash в первой строке скрипта).

Проблема в том, что тот же результат все еще даже после ввода SHELL = / bin / bash в файле crontab.

Итак, вопрос в том, что случилось в этой настройке? и как я могу запланировать этот скрипт с помощью crontab?

1
задан 2 October 2016 в 13:08

0 ответов

Другие вопросы по тегам:

Похожие вопросы: