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,是的