Ne peut pas exécuter des scripts bash de crontab quand il fonctionne en ligne de commande bash

J'ai un problème étrange d'être à la mesure d'exécuter un script bash à partir de la ligne de commande, mais pas de l'entrée crontab de root. Je suis sous Ubuntu 12.04.

* * * * 1-5 root /home/xxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/jmeter-cron-randomise.sh >> /home/xxxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/cron.log

Si je lance le script à partir de la ligne de cmd à l'aide de bash, il fonctionne très bien mais sh échoue avec l'erreur suivante:

> jmeter-cron-randomise.sh: 7: jmeter-cron-randomise.sh: arithmetic
> expression: expecting primary: "  % 1 "

Avoir googlé le problème, il semble que shell standard n'ont pas le même niveau en mathématiques les opérateurs, comme % (modulo), que bash. Je ne suis Pas sûr pourquoi, la tâche cron est un échec dans le script? Je suppose que c'est parce qu'il n'est pas en utilisant le shell bash? Il est certainement être déclenché par le démon cron (pouvez le voir dans /var/log/syslog). Toute aide appréciée.

Ce qui est sur votre ligne shebang?
son #!/bin/bash
Est-ce que votre cron exécutez la commande avec /bin/sh? On dirait qu'il n'est probablement parce que l'erreur est ce que vous aimeriez avoir si vous avez exécuté le script avec sh au lieu de bash (comme dans: sh /home/…/jmeter-cron-randomise.sh). Et sur Ubuntu, /bin/sh est souvent dash, pas bash. Pour corriger, utilisez bash /home/…/jmeter-cron-dandomise.sh >> … dans votre entrée crontab.
Regarde comme il est en cours d'exécution sh. Comment puis-je le forcer à exécuter bash en dehors de la ligne shebang?
kal: exécuter bash /path/of/script.sh. Cette bash devrait être la sortie de which bash, c'est le chemin complet de l'exécutable.

OriginalL'auteur kal | 2014-10-23