Bash脚本不通过Mac OS Launchd运行

Bash脚本不通过Mac OS Launchd运行,bash,macos,launchd,macos-catalina,Bash,Macos,Launchd,Macos Catalina,当我直接通过终端进行尝试时,以下脚本运行良好: count=`ls -l /Users/ben/Downloads/*.png 2>/dev/null | wc -l` echo $count` 它将计数返回为1,这是正确的 但是当我通过launchd运行它时,它总是返回零 这是我的启动脚本 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN

当我直接通过终端进行尝试时,以下脚本运行良好:

count=`ls -l /Users/ben/Downloads/*.png 2>/dev/null | wc -l`
echo $count`
它将计数返回为1,这是正确的

但是当我通过launchd运行它时,它总是返回零

这是我的启动脚本

<?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.ben.Cleaner</string>
  <key>ProgramArguments</key>
  <array>
        <string>/bin/sh</string>
        <string>/Users/ben/Scripts/clean.sh</string>
  </array>
  <key>StartCalendarInterval</key>
  <dict>
    <key>Hour</key>
    <integer>22</integer>
  </dict>
  <key>StandardErrorPath</key>
  <string>/tmp/AlTest12.err</string>
  <key>StandardOutPath</key>
  <string>/tmp/AlTest12.out</string>
</dict>
</plist>

标签
清洁剂
程序参数
/垃圾箱/垃圾箱
/用户/ben/Scripts/clean.sh
StartCalendarInterval
时辰
22
标准错误路径
/tmp/AlTest12.err
标准门诊
/tmp/AlTest12.out

你知道为什么launchd不起作用吗?我正在Mac OS Catalina上运行。

尝试将时间间隔更改为以下结构:

<key>StartInterval</key>
<integer>1800</integer>
StartInterval
1800
本部分:

<key>StartCalendarInterval</key>
  <dict>
    <key>Hour</key>
    <integer>22</integer>
  </dict>
StartCalendarInterval
时辰
22

对我来说不起作用,把所有的东西都转换成秒,也许这会有帮助,对我来说是这样。

不应该
/tmp/AlTest12。错误
对它失败的原因有一些线索吗?嗯,没有任何东西,因为没有任何东西会失败。相反,它只是返回零(而不是1)。正如我所说的,如果我从终端运行脚本,它工作得很好!第二行中的角色`在做什么?打字错误?它可以与默认shell相关。在脚本开头添加shell。(#!/bin/bash,#!/bin/zsh…)尝试调试变量,并从脚本中将代码返回到文件中。在脚本的第一行中也使用$()而不是``.)因此,当您从命令行运行
/bin/sh/Users/ben/Scripts/clean.sh
时,它运行良好并打印“1”。@Roadowl,是的