Использование двойных кавычек в команде Applescript Do Shell Script Echo

Я пытаюсь использовать applescript для запуска процесса командной строки. Упрощенная версия Applescript выглядит так

do shell script "echo bwfmetaedit --INAM=\"name\" --IART=\"artist\" --ICRD=\"date\" /desktop/filepath.wav"

с ожидаемым результатом

bwfmetaedit --INAM="name" --IART="artist" --ICRD="date" /desktop/filepath.wav

Если бы я просто запустил эту команду в Терминале, я бы получил правильный вывод. Однако с applescript я получаю следующий результат. Обратите внимание на отсутствующие двойные кавычки вокруг значений.

"bwfmetaedit --INAM=name --IART=artist --ICRD=date /desktop/filepath.wav"

Что мне здесь не хватает? Мне нужны двойные кавычки вокруг значений, иначе команда не будет работать должным образом.

Спасибо, Морган


person IAmDamoSuzuki    schedule 06.02.2013    source источник


Ответы (4)


Пытаться:

do shell script "echo bwfmetaedit --INAM=\\\"name\\\" --IART=\\\"artist\\\" --ICRD=\\\"date\\\" /desktop/filepath.wav"
person adayzdone    schedule 06.02.2013

Кавычки передаются правильно, просто оболочка не повторяет их, потому что они являются частью синтаксиса оболочки.

Если вы попробуете этот AppleScript, который печатает каждый аргумент в отдельной строке:

do shell script "sh -c 'for F in \"${@}\"; do echo \"${F}\"; done' \"${0}\" echo bwfmetaedit --INAM=\"name with spaces\" --IART=\"artist with spaces\" --ICRD=\"date with spaces\" /desktop/filepath.wav"

Затем вы увидите, что вывод:

"echo
bwfmetaedit
--INAM=name with spaces
--IART=artist with spaces
--ICRD=date with spaces
/desktop/filepath.wav"

Каждый аргумент, передаваемый в echo, анализируется должным образом, как если бы он был заключен в кавычки. Кавычки стоят в начале и в конце, потому что это строка AppleScript со встроенными символами новой строки.

person andrewdotn    schedule 06.02.2013

Для меня моя задача была

osascript -e 'tell application "Simulator" to quit'

Итак, мое решение было

do shell script osascript -e 'tell application \"Simulator\" to quit'"

Вы должны выйти перед первой двойной кавычкой, а затем снова перед ней. Спасибо за советы всем!

person Laser Hawk    schedule 25.01.2017

Чтобы вызвать этот внутренний код, попробуйте это

set myStr to "/bin/echo Hello here is \\\"Quoted String\\\"

Вызов сценария do запишет его в двойных кавычках.

do script myStr in front window

person Dhamu    schedule 24.07.2017