%20%E8%BE%93%E5%87%BA%E5%BD%93%E5%89%8D%E5%B7%A5%E4%BD%9C%E7%9B%AE%E5%BD%95%E5%88%97%E8%A1%A8%EF%BC%8C%E7%84%B6%E5%90%8E%E6%89%8D%E8%BE%93%E5%87%BA%20crontab%20%E6%96%87%E4%BB%B6%E6%9C%AC%E8%BA%AB%E7%9A%84%E5%86%85%E5%AE%B9%EF%BC%9F.png)
那么如果cwd
是/tmp
现在的话:
crontab -l
> #min hour day mon dow command
> * * * * * /usr/local/bin/growlnotify -t 'helloTitle' -m 'helloMessage' -n 'myApp' -sw
但:
echo $(crontab -l)
> #min hour day mon dow command 0004d519be91d 0004d519d798b launch-0NKnNe launch-NdhkpV
launch-bqJRD2 launch-zac20v launchd-276.rbWQ6r 0004d519be91d 0004d519d798b launch-0NKnNe
launch-NdhkpV launch-bqJRD2 launch-zac20v launchd-276.rbWQ6r 0004d519be91d 0004d519d798
launch-0NKnNe launch-NdhkpV launch-bqJRD2 launch-zac20v launchd-276.rbWQ6r 0004d519be91d
0004d519d798b launch-0NKnNe launch-NdhkpV launch-bqJRD2 launch-zac20v launchd-276.rbWQ6r
0004d519be91d 0004d519d798b launch-0NKnNe launch-NdhkpV launch-bqJRD2 launch-zac20v
launchd-276.rbWQ6r /usr/local/bin/growlnotify -t 'helloTitle' -m 'helloMessage' -n 'myApp' -sw
所以第一的行 +/tmp内容 +最后的crontab 行
为什么会有这样的行为?我$(crontab -l)
需要if [[ $(crontab -l | grep "^...$") =~ "^...$"]]
答案1
您获得文件列表是因为“crontab -l”返回星号(*),然后将其解释为 glob 字符。
我建议您在测试的 shell 脚本中使用“set -f”来关闭 glob 解释:
set -f
if $(crontab -l | grep -q "^...$"); then
# your stuff
fi
set +f
答案2
改进以前的答案,在子shell中运行命令没有任何价值。
if crontab -l | grep -q '^...$'; then
your stuff
fi
需要强调的是,这避免了需要,因为只检查set -f
输出代码。grep