0 votos

¿Cómo caffeinate una función en el CLI?

Mac caffeinate herramienta acepta el nombre de una utilidad: caffeinate sleep 1 , por ejemplo. ¿Hay alguna forma para aceptar una función así? Por ejemplo:

function mysleep {
  sleep 2
}

caffeinate mysleep    # mysleep: No such file or directory

2voto

jake paine Puntos 11

caffeinate lanza ejecutables. Sin embargo, las funciones de shell sólo existen dentro de la cáscara. Funciones de Shell no son ejecutables.

Solución: llamar a bash directamente

Esto funciona mejor para uno-trazadores de líneas y comandos simples.

caffeinate bash -c 'sleep 2'

Multi-trazadores de líneas de trabajo:

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

Solución: llamar a un script en lugar de una función

En lugar de hacer su trabajo dentro de una función, que se dividió en una secuencia de comandos independiente:

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

1voto

Douglas Puntos 10417

Por la Página de comando man:

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

Una función no es una utilidad como una utilidad tendrá un identificador de proceso (pid) asociado con él. Cuando se especifica una utilidad, caffeinate bifurca un proceso y posee una aserción que impide dormir hasta que se complete ese proceso.

0voto

Tony Williams Puntos 4903

caffeinaterequiere hay un objeto para ejecutar una función no llene este requisito.

Cambiar la función en un script de shell y que funciona muy bien. Así que para tu ejemplo:

`#!/bin/bash 
sleep 2

guardados en un archivo llamado mysleep y luego caffeinate mysleep funciona bien (siempre que el archivo mysleep es en el sistema de ruta de acceso.).

`

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X