0

我正在 Amazon ec2 中创建一个服务器,并将一个 bash 脚本作为用户数据传递给它,该脚本在服务器首次启动时运行。它包括一个使用此处给出的答案为用户添加一行到 crontab 的命令。

directory="/home/intahwebz/current/tools/amazon/"
command="cd $directory && sh backupSQLToS3.sh"
job="15 1 */2 * * $command"
cat <(fgrep -i -v "$command" <(crontab -u intahwebz -l)) <(echo "$job") | crontab -u intahwebz -

此脚本在启动期间似乎工作正常,因为它不显示错误消息并且 cronjob 已安装在 crotab 中。

但是,我还希望脚本在服务器升级期间运行。尝试从命令行运行脚本会出现错误:

installCrontab.sh: line 14: syntax error near unexpected token `('
installCrontab.sh: line 14: `cat <(fgrep -i -v "$command" <(crontab -u intahwebz -l)) <(echo "$job") | crontab -u intahwebz -'

我需要什么来修复这个错误?

4

2 回答 2

1

您的方法对我来说非常有效:

$ whoami
test

$ echo $SHELL
/bin/bash

$ command="cd $directory && sh backupSQLToS3.sh"

$ job="15 1 */2 * * $command"

$ crontab -l


$ cat <(fgrep -i -v "$command" <(crontab -u test -l)) <(echo "$job") | crontab -u test -

$ crontab -l

15 1 */2 * * cd  && sh backupSQLToS3.sh

我错过了设置“目录”变量,但你的代码对我来说很好。

于 2013-01-24T12:22:08.957 回答
0

看起来您正在使用 bourne shell ( /bin/sh) 来执行 bash 脚本。尝试使用bash而不是sh.

于 2013-01-24T12:13:05.733 回答