Bash 想要在MacOS上的特定时间运行脚本,则返回';工作4于2019年6月12日星期三16:55:00';

Bash 想要在MacOS上的特定时间运行脚本,则返回';工作4于2019年6月12日星期三16:55:00';,bash,macos,scripting,Bash,Macos,Scripting,我想创建一个bash脚本,该脚本将在特定时间执行一次性卷命令,但是,当我按照给定的说明操作时,我只需立即打印出: job 4 at Wed Jun 12 16:55:00 2019 我的问题与这个问题类似: 然而,那里的一位用户评论了我遇到的同一个问题,这个问题没有得到回答,所以我想知道是否有其他人对此有解决方案。从我有限的理解来看,mac中的命令应该与linux类似,如果不完全相同,那么请告诉我是否缺少任何东西 我的可执行文件如下所示: #!/bin/bash osascript -e "

我想创建一个bash脚本,该脚本将在特定时间执行一次性卷命令,但是,当我按照给定的说明操作时,我只需立即打印出:

job 4 at Wed Jun 12 16:55:00 2019
我的问题与这个问题类似:

然而,那里的一位用户评论了我遇到的同一个问题,这个问题没有得到回答,所以我想知道是否有其他人对此有解决方案。从我有限的理解来看,mac中的命令应该与linux类似,如果不完全相同,那么请告诉我是否缺少任何东西

我的可执行文件如下所示:

#!/bin/bash

osascript -e "set Volume 0" | at 16:55

它不会在指定的时间更改卷,而是立即使计算机静音并打印出上面给出的文本。

这将要求您使用Python 3并在文件顶部安装依赖项,但它确实有效

#!/usr/bin/env python3

import datetime as dt
import osascript
import sys
from threading import Timer 


def do_the_biz():
    osascript.osascript("set volume output volume 0")
    print("Happy birthday.")
today = dt.datetime.now()
dateString = today.strftime('%d-%m-%Y') + " " + sys.argv[1]
newDate = today.strptime(dateString,'%d-%m-%Y %H:%M')
delay = (newDate - dt.datetime.now()).total_seconds()
Timer(delay,do_the_biz,()).start()
完成以下操作后:
$pip安装osascript…
以及所有其他操作,请按如下方式使用:

#!/bin/bash

osascript -e "set Volume 0" | at 16:55
$~/filename 16:55


上面假设它在您的主文件夹中,但它可以在任何地方,只要您将路径放进去。

使用heredoc避免回声

at 16:55 <<!
    osascript -e "set Volume 0"
!

其中列出了所有作业。

要澄清的是,您希望每天都这样做,还是只在运行它的当天这样做?在任何情况下,我认为这就是您要寻找的:注意,在您链接的问题中,解决方案是
echo
将命令发送到
at
;您正在运行该命令。类似于16:55时echo'osascript-e“set Volume”|的方法可能会起作用。@BenjaminW我试过了,但没有起作用。我似乎尝试过其他人所说的每一种变化,但它仍然只是立即打印出作业,而什么也不做。在这一点上,我不相信At似乎在起作用。当我尝试launchctl-load-w/System/Library/LaunchDaemons/com.apple.atrun.plist时,它说它已经加载了,所以我卸载并重新加载。但这似乎还是一事无成,当我转到那个目录时,并没有com.apple.atrun.plist文件。这跟这事有关系吗?