Errore durante l'utilizzo di "script di shell"

2

Utilizzo un MacBook Pro (Retina, metà 2014) che esegue El Capitan. Sto cercando di creare uno script che controlli se il mio computer è aperto o no, e sto usando questo:

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

Ho provato questo in Terminal e funziona bene, quindi aggiungo do shell script davanti ad esso per eseguirlo in AppleScript. Ma quando lo faccio, mi dà questo:

Expected end of line, etc. but found identifier.

Aiutatemi!

    
posta atirit 03.03.2016 - 02:56
fonte

1 risposta

0

Invece di eseguire il piping su grep e cut , usa awk .

do shell script "ioreg -r -k AppleClamshellState | awk -F \" = \" '/AppleClamshellState/ {print $2}'"
  • -F \" = \" rende il separatore: = (spazio = spazio)
  • /AppleClamshellState/ Cerca: AppleClamshellState
  • {print $2} Stampa o No a seconda di cosa viene restituito per: AppleClamshellState
  • E.g "AppleClamshellState" = No stampa No

Puoiancheusare:

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

Tuttavia, ci sarà uno spazio iniziale davanti a o No poiché cut gestisce solo un singolo carattere per il deliminatore.

Nota:lapartedeltestodelcomandodidoshellscript,ades.doshellscript"uptime" deve essere espresso in virgolette. Quindi quando la stringa di testo del comando stessa usa le doppie virgolette nella stringa , si dovrebbe sostituire una virgola singola ' laddove possibile e se devono essere usate virgolette doppie all'interno di string quindi sfuggirgli con una barra rovesciata \ .

    
risposta data 03.03.2016 - 03:24
fonte

Leggi altre domande sui tag