2 votos

Error al utilizar "do shell script"

Estoy usando un MacBook Pro (Retina, mediados de 2014) que ejecuta El Capitan. Estoy intentando crear un script que compruebe si mi ordenador está abierto o no, y estoy usando esto:

ioreg -r -k AppleClamshellState | grep '"AppleClamshellState"' | cut -f2 -d"=""

He probado esto en Terminal y funciona bien, así que añado do shell script delante de ella para ejecutarla en AppleScript. Pero cuando lo hago, me da esto:

Expected end of line, etc. but found identifier.

¡Por favor, ayuda!

0 votos

He actualizado mi respuesta para utilizar grep y cut sin embargo yo me quedaría con awk ¡!

0 votos

Véase la nota que aparece al final de mi respuesta para aclarar los problemas de citación que rodean a los comandos complejos utilizados con do shell script .

0voto

user3439894 Puntos 5883

En lugar de pasar por la tubería a grep y cut , sólo tiene que utilizar awk .

do shell script "ioreg -r -k AppleClamshellState | awk -F \" = \" '/AppleClamshellState/ {print $2}'"
  • -F \" = \" hace el separador: = (espacio = espacio)
  • /AppleClamshellState/ Busca: AppleClamshellState
  • {print $2} Imprime o No dependiendo de lo que se devuelva: AppleClamshellState
  • Por ejemplo "AppleClamshellState" = No imprime No

enter image description here

También puedes usar:

do shell script "ioreg -r -k AppleClamshellState | grep 'AppleClamshellState' | cut -d'=' -f2"

Sin embargo, habrá un espacio de dirección frente a o No como cut sólo maneja un único carácter para el eliminador.

enter image description here

Nota: El texto del comando parte de do shell script Por ejemplo do shell script "uptime" debe ir entre comillas. Así, cuando el cadena de texto del comando está utilizando comillas dobles dentro de la cadena se debe sustituir por una comilla simple ' siempre que sea posible y si hay que utilizar comillas dobles dentro de la cadena y luego escapar de ellos con una barra invertida \ .

0 votos

Me da el mismo error.

0 votos

A mí me funciona bien.

0 votos

Bien, ahora tengo set myVar to "do shell script "ioreg -r -k AppleClamshellState | awk -F \" = \" '/AppleClamshellState/ {print $2}'"" y me da A identifier can’t go after this “"”. iluminación ioreg .

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