Ya que estás canalizando , la salida del comando pbpaste
directamente a say
comando , por ejemplo, [[volm 0.35]]
tendría que ser parte de lo que está en el portapapeles como, por ejemplo, [[volm 0.35]]
debe preceder al contenido de lo que realmente se va a decir.
Intentaré usar lo siguiente en lugar de lo que estás usando:
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 $!"
Actualizar: Si desea continuar usando pbpaste
, este comando de ejemplo debería funcionar:
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 $!")
Tenga en cuenta las diferencias principales entre el comando dentro del do shell script "..."
comando en su pregunta y mi respuesta.
-
echo \"[[volm 0.35]]
se agrega delante de LANG=...
y tenga en cuenta el espacio después de ]]
.
-
El LANG=en_US.UTF-8 pbpaste -Prefer txt
ahora está encerrado en $(...)
, que está usando Sustitución de comandos para, en esencia, concatenar lo que se hace eco en el pipe antes del say
comando .
-
Además de un literal de cierre coincidente, comillas dobles \"
, antes del pipe a say
, para ir con el que está en echo \"[[volm 0.35]]
. Funcionó en pruebas limitadas sin el uso de las comillas dobles de apertura y cierre, sin embargo, probablemente sea mejor incluirlas entre comillas dobles para tener en cuenta algo que shell podría intentar expandir innecesariamente.
Dicho esto, en mi sistema el uso de 0.35
para el valor en [[volm 0.35]]
no funcionó bien ya que fue difícil percibir la diferencia en el volumen de mi configuración normal. Sin embargo, al utilizar 0.3
en [[volm 0.3]]
, la diferencia fue notable. (Esta es una de las razones por las que usé "por ejemplo, [[volm 0.35]]
" en mi oración inicial).