Posso sostituire i caratteri in AppleScript?

1

Sto lavorando su un AppleScript per montare le condivisioni di Active Directory e ho creato la seguente parte che esamina gli utenti che hanno effettuato l'accesso "SMBHome:" e mi fornisce la condivisione home degli utenti ma le barre sono nella direzione sbagliata "\" e devi cambiarli in "/".

Finora l'AppleScript è:

set username to do shell script "whoami"

set homepath to do shell script "dscl '/Active Directory/CAMPUS/All Domains/' -read /Users/" & username & " |grep SMBHome:"

Quando viene eseguito mi dà un risultato di

"SMBHome: \\server\share\username"

Mi piacerebbe avere il passo successivo per sostituire le barre posteriori con barre e rimuovere:

"SMBHome: \"

Con un risultato finale di:

//server/share/username

È possibile?

Grazie!

    
posta Carter 20.08.2015 - 18:00
fonte

2 risposte

1

Ci sono due approcci per risolvere questo problema. Uno è quello di utilizzare JavaScript per l'automazione (sia mettendo AppleScript in un flusso di lavoro di Automator e quindi utilizzando un'azione Esegui JavaScript separata, o riscrivendo l'intero script in JXA), mentre l'altro è utilizzare sed e cut utilità della riga di comando tramite do shell script .

Ecco l'approccio JavaScript:

var string = "SMBHome: \\server\share\username" // this would be your 'homepath' variable
var corrected = string.replace(/\/g, '/').replace('SMBHome: ', '')

Questo script utilizza la funzione JavaScript replace incorporata per far corrispondere e sostituire il testo utilizzando le espressioni regolari.

D'altra parte, potresti anche usare sed e cut nel tuo AppleScript, in questo modo:

set init to do shell script "echo ' " & homepath & "' | sed 's/\\/\//g'"
set corrected to do shell script "echo " & init & " | cut -c 10-"

Questo usa sed per il RegEx, quindi cut per tagliare il primo bit del percorso dalla stringa.

In entrambi i casi, la variabile corrected contiene la stringa finale modificata. Dovrei notare che, mentre il comportamento desiderato può essere realizzato in puro AppleScript, può essere piuttosto noioso.

    
risposta data 20.08.2015 - 18:42
fonte
0

Grazie per la risposta @aaplmath, in realtà ho appena trovato l'aggiunta necessaria che è ciò che hai e fa il lavoro!

| grep SMBHome: | cut -c 10- | sed 's/\\/\//g' "

Grazie per il tuo contributo!

    
risposta data 20.08.2015 - 18:56
fonte

Leggi altre domande sui tag