如何在CLI上启用功能?


0

Mac的caffeinate工具接受实用程序的名称:caffeinate sleep 1例如。它也可以接受功能吗?例如:

function mysleep {
  sleep 2
}

caffeinate mysleep    # mysleep: No such file or directory

Answers:


1

根据手册页

caffeinate -- prevent the system from sleeping on behalf of a utility

函数不是实用程序,因为实用程序将具有与其关联的进程ID(pid)。当您指定实用程序时,将caffeinate派生一个进程并保留一个断言,该断言可防止睡眠,直到该进程完成为止。


1

caffeinate启动可执行文件。但是,shell函数仅存在于shell中。Shell函数不是可执行文件。

解决方法:直接致电bash

这对于单线和简单命令最有效。

caffeinate bash -c 'sleep 2'

多班轮也可以工作:

caffeinate bash <<EOF
  sleep 2
  echo "done :D"
EOF

解决方法:调用脚本而不是函数

与其在函数内完成工作,不如将其拆分成一个单独的脚本:

caffeinate mysleep.sh
#!/bin/bash
# mysleep.sh
sleep 2

0

caffeinate 要求有一个要运行的对象,函数不能满足此要求。

将您的函数更改为shell脚本,它将可以正常工作。因此,对于您的示例:

`#!/bin/bash 
sleep 2

保存到名为的文件中mysleep,然后caffeinate mysleep可以正常工作(只要该文件mysleep位于系统PATH中即可)。

`

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.