首页 > 解决方案 > 为什么我的 zsh 脚本可以独立工作,但在被 launchd 调用时却不能?

问题描述

我寻求帮助以使用 macOS Big Sur v11.4 在我的 imac 上设置定期作业。我想要做的是使用 bash 或 zsh 脚本每 60 秒删除给定文件夹的所有内容。不管是哪一个。终端的默认设置为 zsh。因此我用zsh尝试了它。

我目前的方法是有两个文件。一个删除文件夹内容的 zsh 脚本,对于“launchd”,我有一个 plist,它应该定期调用该脚本。

如果我在终端中调用 zsh 脚本,它可以正常工作并删除文件夹内容。但是当它被 launchd 调用时,它返回“找不到匹配项”,我不知道问题出在哪里。

因此,如果有人可以帮助我,那将是非常友好的。

/Library/LaunchDaemons/com.deleteGCODE.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.deleteGCODE.plist</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/deleteGCODE.sh</string>
    </array>
    <key>StartInterval</key>
    <integer>60</integer>
    <key>StandardErrorPath</key>
        <string>/tmp/mycommand.err</string>
    <key>StandardOutPath</key>
        <string>/tmp/mycommand.out</string>
</dict>
</plist>

/usr/local/bin/deleteGCODE.sh:

#!/bin/zsh
dir="/Users/simon/Documents/Simplify3D/GCODE/"
rm -rf "$dir"*

/tmp/mycommand.out 的输出:

/usr/local/bin/deleteGCODE.sh:3: no matches found: /Users/simon/Documents/Simplify3D/GCODE/*

ps 非常抱歉,我在错误的部分发布了我之前的消息。希望这次是正确的。

标签: zshlaunchd

解决方案


推荐阅读