在if语句中从crontab-l读取Bash

在if语句中从crontab-l读取Bash,bash,ubuntu,if-statement,crontab,Bash,Ubuntu,If Statement,Crontab,我正在尝试读取crontab-l的输出,以验证cronjob是否正确添加 当前crontab-l的输出为: 0*/3***~/scripts/snapshot.sh(应该是这样的) 我要检查的脚本如下所示: #!/bin/bash if `crontab -l` = "0 */3 * * * ~/scripts/snapshot.sh"; then echo "Done creating a cronjob" else echo "NOTICE: Failed cr

我正在尝试读取
crontab-l
的输出,以验证cronjob是否正确添加

当前
crontab-l
的输出为:

0*/3***~/scripts/snapshot.sh
(应该是这样的)

我要检查的脚本如下所示:

#!/bin/bash

if `crontab -l` = "0 */3 * * * ~/scripts/snapshot.sh"; then
       echo "Done creating a cronjob"
else
       echo "NOTICE: Failed creating a crontab"
fi
#!/bin/bash
croncheck=`crontab -l`

echo $croncheck

#or
#echo `crontab -l`
我尝试过多种方法,但都不起作用,如果我执行以下操作:

#!/bin/bash

if `crontab -l` = "0 */3 * * * ~/scripts/snapshot.sh"; then
       echo "Done creating a cronjob"
else
       echo "NOTICE: Failed creating a crontab"
fi
#!/bin/bash
croncheck=`crontab -l`

echo $croncheck

#or
#echo `crontab -l`
输出显示如下:

0*/3 cronjobs scripts test.sh cronjobs scripts test.sh cronjobs scripts test.sh~/scripts/snapshot.sh


而不是它应该显示什么(它应该是什么)。

我将使用regexp进行搜索,但如果regexp中仍然有一些魔力,请对其进行测试。这也可以扩展到匹配任何有效时间,而不仅仅是您提供的时间

if [ -z "`crontab -l | grep '^0 \*/3 \* \* \* ~/scripts/snapshot.sh' `" ]; then
  echo "not found, something is wrong"
else
  echo "found, this is ok"
fi

*正在扩展到文件名,那么如何才能使其正常工作?你能帮忙吗?“=”比我期望的字符串比较要少一点。您可以单引号引用比较字符串,但我建议编写一个regexp进行检查。对于bash字符串比较,我的第一个目标是:
if[-z`crontab-l | grep'^0\*/3\***~/scripts/snapshot.sh'`;然后由于如果您需要另一个cronjob.flaschenpost,那么您的版本中的所有内容都会中断,您可以将其作为一个答案,以便我可以标记为已回答?再次感谢你!顺便说一句,您的代码可以工作,但在回显答案之前,它会给出一个小错误(只有当它说“找到”时,这才是确定的)。错误是:
[:参数太多了
啊,当然,我错过了双引号。
“`crontab-l..`