我正在Amazon ec2中创建一个服务器并将其作为userdata传递给bash脚本,该脚本在服务器首次启动时运行。它包含一个命令,用于使用答案given here为用户添加一行到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 -
此脚本在启动期间似乎工作正常,因为它没有显示错误消息,并且cronab中安装了cronjob。
但是我也希望脚本在服务器升级期间运行。尝试从命令行运行脚本会出现错误:
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 -'
我需要修复此错误?
答案 0 :(得分: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
我错过了设置“目录”变量但你的代码对我来说很好。
答案 1 :(得分:0)
看起来您正在使用bourne shell(/bin/sh
)来执行bash脚本。尝试使用bash
代替sh
。