我正在尝试使用Launchd来运行以下shell脚本:
#!/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完成。我该怎么做呢?
发布于 2015-01-08 07:44:14
这里最有可能的情况是,您在一个不在launchd的PATH中的位置安装了sunwait。解决方案很简单,就是指定要在脚本中使用的PATH --作为安全措施,如果sunwait失败,则告诉脚本不要创建文件。
#!/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中有说明)。
https://stackoverflow.com/questions/27830549
复制相似问题