2014-01-08 66 views
1

有bash脚本来设置cron作业。执行时的Bash变量

start.sh:

read -e -p "Enter the path to the log directory: " -i "/home/arya/apps/" LOGPATH 
read -e -p "Enter comma separated recepient email-ids:" EMAIL 

CURRENT=`pwd` 
COMMAND="python ${CURRENT}/start.sh 2014-08-01T21:12:12 2014-08-01T23:12:12 $LOGPATH $EMAIL" 
echo $COMMAND #Here expected output is coming : */3+1 * * * * python /home/arya/start.sh 2014-08-01T21:12:12 2014-08-01T23:12:12 /home/arya/apps/utils [email protected] 
cat <(fgrep -i -v "$COMMAND" <(crontab -l)) <(echo "*/3+1 * * * *") | crontab - 

这是不考虑在crontab文件$当前值。输出中使用的crontab -e命令寻找文件:

*/3+1 * * * *   rest things are missing. 

预期输出:

*/3+1 * * * * python /home/arya/start.sh 2014-08-01T21:12:12 2014-08-01T23:12:12 /home/arya/apps/utils [email protected] 

这里有什么问题吗?

平台:UBUNTU 13.04

+0

根据您的输出,它似乎缺少整个'COMMAND'而不仅仅是'CURRENT'。我最初的猜测是'fgrep'的输出结果是空白或空的,所以你只是得到'echo'的输出。你可以将其分解并首先检查每件。在设置shell变量'CURRENT'和'COMMAND'之后,试着运行'fgrep -i -v“$ COMMAND”<(crontab -l)'命令,看看它是否给你所期望的。 – lurker

+0

[UUOC](http://partmaps.org/era/unix/award.html) – l0b0

+0

但echo $ COMMAND正在提供完整的东西。 –

回答

1

您需要添加的命令变量回波显示它。

cat <(fgrep -i -v "$COMMAND" <(crontab -l)) <(echo "*/3+1 * * * * $COMMAND") | crontab -