那么如果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