EV3가 말하게 하는 기능이 있습니다
speak(){ espeak -a 200 -s 130 -v la --stdout "$@" | aplay; }
작동 방식은 간단합니다
speak "Say this"
파일의 내용을 말하고 싶기 때문에 이것을 가지고 있습니다.
printf '%b\n' "$(cat joyPhrase)"
printf의 출력을 명령문 주위에 따옴표로 묶으려면 어떻게 해야 합니까?
답변1
큰따옴표를 피할 수 있습니다
printf '%b\n' "\"$(cat joyPhrase)\""
내 컴퓨터에
$ echo this is a file >> testfile
$ printf '%b\n' "\"$(cat testfile)\""
"this is a file"
cat을 사용하는 대신 리디렉션을 사용할 수 있습니다.
$ printf '%b\n' "\"$(< testfile)\""
"this is a file"
답변2
espeak
지원 사용--stdin
파이프에서 읽으므로 한 가지 옵션은 인수 대신 파이프를 사용하도록 함수 호출을 변경하고 printf 출력을 함수에 파이프하는 것입니다.
speak(){ espeak -a 200 -s 130 -v la --stdout --stdin | aplay; }
printf '%b\n' "$(cat joyPhrase)" | speak
또는 다음과 같이 다른 명령의 출력을 speak
인수에 전달할 수 있습니다(단, 제어 문자가 있는 경우에는 작동하지 않을 수 있음).
speak $(printf '%b\n' "$(cat joyPhrase)")