У меня есть программа в bash, которая изменит мой показанный MAC-адрес. Я хочу превратить эту программу в applescript, используя «скрипт do shell». Однако всякий раз, когда я запускаю код в функции «сделать сценарий оболочки», он не работает. Это странно, потому что это работает в терминале.
Это на моем компьютере Mac, и я считаю, что это проблема с необходимыми кавычками после функции «сделать сценарий оболочки». Я попытался изменить порядок цитат, но, похоже, это не сработало.
sudo ifconfig en0 ether "$(openssl rand -hex 6 | sed 's/../&:/g;s/:$//')"
Вот базовый код
do shell script "sudo ifconfig en0 ether "$(openssl rand -hex 6 | sed 's/../&:/g;s/:$//')"" with administrator privileges
Вот вариант AppleScript этого кода.
Ожидалось, что этот код изменит мой MAC-адрес, но вместо этого он вернул «ошибку -212».
Не уверен, что такое ошибка -212, но в AppleScript (двойная) кавычка используется для разделения строк, поэтому, чтобы использовать ее в, строку, которую нужно экранировать, например, обратной косой чертой
do shell script "ifconfig en0 ether \"$(openssl rand -hex 6 | sed 's/../&:/g;s/:$//')\"" with administrator privileges
Обратите внимание, что sudo
не следует использовать с administrator privileges
— см. Apple Техническое примечание TN2065.