Parece que estás intentando establecer una bandera que alterna cada vez que se ejecuta el Servicio , y hay más de una forma de lograrlo.
En este ejemplo, creé un Automator Servicio denominado Test Service , con la configuración que se muestra en la imagen a continuación, y se agregó una acción Ejecutar el script de shell , ya que esto es todo lo que necesita para realizar la tarea ya que estaba usando un do shell script AppleScript command de todos modos para hacer el trabajo .

Comoestácodificadoactualmente,cadavezqueseejecutaelServiciodicequelabanderaseestableceen0o1,ylaestableceenelopuesto.Porsupuesto,eliminaríaloscomandossay...reemplazándolosconelcódigoquedeseaejecutarsegúnlaconfiguracióndelabandera.
#!/bin/bash
file="$HOME/Library/Services/Test Service.workflow"
flag="$(xattr -l "$file" | awk '/com.TestService.flag/{print $2}')"
if [[ $flag -eq 0 ]]; then
# Do something...
say "flag is currently set to 0, setting flag to 1"
# Set flag to 1.
xattr -w com.TestService.flag 1 "$file"
else
# Do something else...
say "flag is currently set to 1, setting flag to 0"
# Set flag to 0.
xattr -w com.TestService.flag 0 "$file"
fi
Esto usa xattr para establecer un atributo extendido en el Automator's Service .workflow file y esto es lo que se lee cada vez y se cambia cada vez que se ejecuta el Servicio y esta es la bandera para determinar qué rama de if sentencia se ejecuta en el script .
Puede configurar manualmente el com.TestService.flag usando xattr en Terminal antes de ejecutar el guardado Automator's Servicio para que se aplique el atributo extendido a .workflow file o si simplemente ejecuta el guardado Automator Service es la primera vez que lo configurará como 1 , ya que lee flag variable por primera vez como si fuera igual a 0 .
La siguiente salida de Terminal muestra los atributos extendidos del Automator's Servicio .workflow archivo cuando se guardó por primera vez, solo tenía el com.apple.FinderInfo atributo establecido, y luego el Servicio se ejecutó un par veces para mostrar que el atributo com.TestService.flag se configuró y cambió cada vez que se ejecutó el Servicio . (Ejecuté manualmente el comando xattr antes y luego entre cada vez que ejecuté el Servicio para mostrar este resultado .
$ xattr -l "$HOME/Library/Services/Test Service.workflow"
com.apple.FinderInfo:
00000000 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 |................|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020
$ xattr -l "$HOME/Library/Services/Test Service.workflow"
com.apple.FinderInfo:
00000000 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 |................|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020
com.TestService.flag: 1
$ xattr -l "$HOME/Library/Services/Test Service.workflow"
com.apple.FinderInfo:
00000000 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 |................|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020
com.TestService.flag: 0
$
Obviamente, puedes cambiar el nombre de la bandera de com.TestService.flag a lo que quieras, pero recuerda cambiarlo en el script en los tres lugares, en el comando awk y en cada comando xattr en cada rama de la declaración if . También cambie el nombre de la variable file según corresponda para el nombre real de su Automator Servicio .workflow archivo .