Почему "dscl . -Change /Users/wick RealName" выполняет работу в терминале, а не в ScriptEditor?

root# dscl . -change /Users/default RealName "Brian" "David"

При запуске этой команды в Терминале полное имя пользователя, связанного с домашней папкой "default", изменяется с Брайана на Дэвида.

Однако, когда я пытаюсь запустить эту команду в ScriptEditor, я получаю синтаксическую ошибку.

do shell script "dscl . -change /Users/default RealName "Brian" "David""

Ошибка синтаксиса
Есть идеи, как я могу это исправить?

1 ответ

Решение

Вторая двойная кавычка нарушает синтаксис, потому что она указывает конец буквального аргумента сценария оболочки. Вы даже можете увидеть это в исходном тексте (подсветка синтаксиса).

Я думаю, двойные кавычки вокруг имен не нужны, так что это просто

do shell script "dscl . -change /Users/default RealName Brian David"

Однако, если требуются двойные кавычки, вы должны их избежать

do shell script "dscl . -change /Users/default RealName \"Brian\" \"David\""
Другие вопросы по тегам