首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Launchd Shell脚本执行失败

Launchd Shell脚本执行失败
EN

Stack Overflow用户
提问于 2015-01-08 07:28:43
回答 1查看 148关注 0票数 0

我正在尝试使用Launchd来运行以下shell脚本:

代码语言:javascript
复制
#!/bin/sh

## wait for sunset, touch file

NIGHTTIME='/Users/mnewman/Documents/webcam/nighttime.txt'

sunwait civ down  14.98N 102.09E
touch "$NIGHTTIME"

"sunwait“是一个可执行文件,它在后台运行,等待日落/日出,然后退出。在这种情况下,我将其设置为等到我所在地理位置的平民日落。

如果我从命令行运行这个脚本,它工作得很好。如果我使用Launchd运行它,那么touch命令会在sunwait完成之前运行。在执行下一行之前,我需要等待sunwait完成。我该怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2015-01-08 07:44:14

这里最有可能的情况是,您在一个不在launchd的PATH中的位置安装了sunwait。解决方案很简单,就是指定要在脚本中使用的PATH --作为安全措施,如果sunwait失败,则告诉脚本不要创建文件。

代码语言:javascript
复制
#!/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin:/opt/local/bin
nighttime=/Users/mnewman/Documents/webcam/nighttime.txt

sunwait civ down  14.98N 102.09E || exit
touch "$nighttime"

将shebang行更改为#!/bin/sh -e也会在sunwait无法运行时导致脚本提前退出,尽管使用set -e有一些重要的注意事项(在BashFAQ #105中有说明)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27830549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档