Bash 스크립트 기능에서 spd-say 사용

Bash 스크립트 기능에서 spd-say 사용

나는 이것이 상당히 기본적인 것이라고 확신하지만 그것을 알아낼 수는 없습니다.

내 스크립트:

#!/bin/bash
sez ()
{
  echo $1
  spd-say "$1"
}
sez "does this work"
sez "this does work"

내가 달성하고 싶은 것은 함수 내에서 spd-say를 사용하여 컴퓨터가 나에게 말하도록 하는 것입니다.

내 기능의 에코 부분이 작동합니다. 예상한 순서대로 입력한 두 줄의 텍스트를 출력합니다. 그러나 spd-say 부분은 그렇지 않습니다. 마지막 줄만 말합니다. 나는 이것이 두 번째 명령이 첫 번째 명령의 출력을 동일한 출력과 병렬로 실행하려고 하기 때문에 "덮어쓰기" 때문이라고 가정합니다. spd-say 명령 등의 기능 내에서 sez 명령 끝, 그 다음 줄에 ;wait, && 및 기타 다양한 항목을 추가하려고 시도했지만 시도한 것은 도움이 되지 않았습니다.

내가 뭘 잘못했나요?

답변1

비슷한 문제가 있었고 해결책을 찾았습니다. 나는 spd-say를 사용하지 않고 espeak를 직접 사용했습니다.

답변2

spd-say에는 적합한 쉘 환경이 필요합니다. cron은 일반 쉘 환경에서 작업을 실행하지 않습니다.

다음 예와 같이 스크립트를 변경해 볼 수 있습니다.

#!/bin/bash
source $HOME/.profile
sez ()
{
  echo $1
  spd-say "$1"
}
sez "does this work"
sez "this does work"

자세한 내용은 다음 질문을 참조하세요.http://unix.stackexchange.com/questions/67940/cron-ignores-variables-define-in-bashrc-and-bash-profile

관련 정보