我创建了一个脚本helloworld.sh
,其路径为/home/ehimkak/cronTabTest
:
#/usr/bin/sh
echo $1
if [[ $1 = "cron" ]] ; then
echo "hiiiii"
else
echo "sorry"
fi
如果我使用命令
从/
位置运行它
/home/ehimkak/cronTabTest/helloworld.sh cron
它运行良好。
现在我添加了一个cron作业,首先将编辑器设置为vi(export EDITOR = vi),然后使用命令crontab -e
。
我添加了一行
10,15,20,25,30,35,40,45,50,55 * * * * /home/ehimkak/cronTabTest/helloworld.sh cron>>/home/ehimkak/cronTabTest/t1.txt
结果是脚本正在运行,但输出不符合要求。
我得到的t1.txt文件中的输出是
cron
sorry
但我的输出必须
cron
hiiii
脚本没有问题,但我不明白为什么crontab
会以这种方式表现。
请帮忙......
答案 0 :(得分:2)
尝试替换
if [[ $1 = "cron" ]] ; then
与
if [[ "$1" = "cron" ]] ; then
答案 1 :(得分:2)
我能够解决问题并且解决方案非常简单。
我刚刚编辑了第一行的shell行 现在第一行是
#!/usr/bin/sh
所以我加了!我的问题解决了
答案 2 :(得分:2)
为了便于阅读的其他内容:而不是每隔5分钟调用一次,你可以说它不同:
bevore: 10,15,20,25,30,35,40,45,50,55 * * * * "/home/ehimkak/cro...
after: */5 * * * * "/home/ehimkak/cro...
* / 5将每隔5分钟调用一次cronjob,这样可以让它更具可读性!
内切
答案 3 :(得分:1)
形成一个典型的crontab(5)联机帮助页....
“第六”字段(行的其余部分)指定 要运行的命令。整个命令部分 line,直到换行符或%字符,将由。执行 / bin / sh或由SHELL变量中指定的shell cronfile。除非,否则命令中的百分号(%) 使用反斜杠()转义,将更改为换行符 字符以及第一个%之后的所有数据都将被发送到 该命令作为标准输入。
我会给你两个建议:
首先尝试了解发生了什么。日志永远是你的朋友。说,在你的脚本中添加如下内容:
echo $#>的/ tmp /日志
echo $ @>>的/ tmp /日志
echo $ *>>的/ tmp /日志
并检查参数是否正在传递。
另一个提示是尝试传递所有逃脱的内容,如:
10,15,20,25,30,35,40,45,50,55 * * * * "/home/ehimkak/cronTabTest/helloworld.sh cron" >>/home/ehimkak/cronTabTest/t1.txt