Чи можна замінити символи в AppleScript?


1

Я працюю над AppleScript, щоб монтувати наші акції домену Active Directory, і я придумав наступну частину, яка дивиться на зареєстрованих користувачів "SMBHome:", і це дає мені частку користувача, але косих рисок не в порядку "" і потрібно змінити їх на "/".

До цих пір 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:"

При запуску це дає мені вихід

"SMBHome: \\\\server\\share\\username"

Мені дуже хотілося б, щоб наступний крок замінив зворотні риси прямими рисами і видалив:

"SMBHome: \\"

З кінцевим результатом:

//server/share/username

Це можливо?

Дякую!

Відповіді:


1

Існує два підходи до вирішення цієї проблеми. Один з них полягає у використанні JavaScript для автоматизації (або шляхом перенесення вашого AppleScript у робочий процес Automator, а потім за допомогою окремої дії JavaScript JavaScript або шляхом повторного запису всього сценарію в JXA), а інший - використання sed і cut утиліти командного рядка через do shell script.

Ось підхід JavaScript:

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

Цей сценарій використовує вбудований JavaScript replace функція для відповідності та заміни тексту за допомогою регулярних виразів.

З іншого боку, ви також можете використовувати sed і cut у вашому AppleScript, так:

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

Це використовує sed для RegEx, то cut обрізати перший біт шляху від рядка.

В обох випадках corrected змінна містить кінцевий, змінений рядок. Варто зауважити, що, хоча бажана поведінка може бути виконана в чистому AppleScript, вона може бути досить стомлюючою.


0

Спасибі за відповідь @aaplmath, я насправді просто знайшов необхідне доповнення, яке є у вас, і це робить роботу!

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

Дякуємо за ваш внесок!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.