Так як ви трубопроводів вихідні дані pbpaste
команду безпосередньо на say
команду , потім напр. [[volm 0.35]]
повинні бути частиною того, що знаходиться в буфері обміну, наприклад, [[volm 0.35]]
повинні передувати змісту того, що насправді буде сказано.
Замість того, що ви використовуєте:
set howLoudAndWhatToSay to "[[volm 0.35]] \"" & (get the clipboard as string) & "\""
set this_say_Pid to do shell script "say " & howLoudAndWhatToSay & " > /dev/null 2>&1 & echo $!"
Оновити: Якщо ви хочете дотримуватися використання pbpaste
, тоді команда прикладу має працювати:
set this_say_Pid to (do shell script "echo \"[[volm 0.35]] $(LANG=en_US.UTF-8 pbpaste -Prefer txt)\" | say > /dev/null 2>&1 & echo $!")
Зверніть увагу на первинні відмінності між команду в межах do shell script "..."
команду у вашому питанні і моїй відповіді.
echo \"[[volm 0.35]]
додано перед LANG=...
і відзначте простір після ]]
.
The LANG=en_US.UTF-8 pbpaste -Prefer txt
тепер укладено $(...)
яка використовує підстановку команд, щоб, по суті, об'єднати те, що отримало відлуння з труби попереду say
команду .
Так само як і відповідний закриваючий буквальний подвійний цитат \"
, перед труби до say
, щоб піти з одним в echo \"[[volm 0.35]]
. Він працював у обмеженому тестуванні без використання відкритих і закриваючих подвійних котирувань, проте, можливо, краще вкласти його в подвійні котирування, щоб пояснити щось оболонки може спробувати розширитися.
Це сказав, на моїй системі використання 0.35
для значення в [[volm 0.35]]
не спрацювала добре в тому, що було важко сприймати різницю в обсязі від мого нормального налаштування. Однак користуватися 0.3
в [[volm 0.3]]
різниця була помітна. (Це одна з причин, чому я використовував "напр. [[volm 0.35]]
"у моєму початковому реченні.)
[[volm 0.35]]
належить до рядка коду, який я надав.