【发布时间】:2022-08-16 03:30:16
【问题描述】:
我有以下简单的脚本:
#!/bin/sh
a() {
echo 1
}
a
b() {
for file in \"${DOWNLOADS}\"123_*; do
mv \"${file}\" \"${DOWNLOADS}321\"
done
}
b
c() {
echo 2
}
c
它是可执行的,如果我从终端调用它,它工作得完全正确:甲,乙,丙.但是如果我尝试通过cron而且没有\"123_{某事}\" 文件中的\"${下载}\" 目录,则只有函数一个执行,并开始 for 循环。功能C不调用,因为脚本停止。
crontab -l
=>
10 20 * * * zsh /user/file
调试显示如下:
10 20 * * * zsh /user/file >> ~/tmp/cron.txt 2>&1
=>
+/user/file:47> a
+a:1> echo 1
1
+/user/file:67> b
file:12: no matches found: /Users/ivan/Downloads/123_*
可以看出,在找不到文件后脚本的执行立即停止。
我不明白为什么要通过这个脚本执行cron如果找不到文件,则停止,以及如何避免这种情况;谁能解释一下?
或者也许这只是我环境的限制?
-
不确定这是否相关,但您有一个带有
#!/bin/shshebang 的脚本,但您使用zsh调用它。也许您需要检查您的(cron)环境中哪些 zsh 选项处于活动状态?