想要在特定时间在MacOS上运行脚本,而是返回``2019年6月12日星期三16:55:00的职位4''

时间:2019-06-11 16:27:06

标签: bash macos scripting

我想创建一个bash脚本,该脚本将在某个时间执行一次性批量命令,但是,当我按照给出的说明进行操作时,我只是立即得到以下内容的打印件:

job 4 at Wed Jun 12 16:55:00 2019

我的问题类似于以下问题:How to run a script at a certain time on Linux?

但是,那里的用户评论了我遇到的相同问题,而这个问题没有得到回答,因此我想知道是否还有其他人对此有解决方案。从我的有限了解中,mac中的命令应该与linux相似(如果不相同),因此请让我知道是否缺少任何内容。

我的可执行文件如下:

#!/bin/bash

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

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

2 个答案:

答案 0 :(得分:0)

这将要求您具有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 install osascript...及其所有其他内容,请像这样使用:

$ ~/filename 16:55

以上假设它位于您的主文件夹中,但是只要您将路径放入其中,它就可以在任何位置。

答案 1 :(得分:0)

使用Heredoc避免回声

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

然后,确认您的工作安排在

at -l

列出所有作业。