J'ai une fonction qui a mon EV3 parler
speak(){ espeak -a 200 -s 130 -v la --stdout "$@" | aplay; }
cela fonctionne simplement
speak "Say this"
Je veux qu'il dise le contenu d'un file, donc j'ai ceci
printf '%b\n' "$(cat joyPhrase)"
Comment get la sortie de la printf dans les guillemets pour parler?
espeak
prend en charge l'utilisation de --stdin
pour lire à partir d'un tube, donc une option serait de changer votre appel de fonction pour l'utiliser à la place des parameters, et de diriger la sortie printf dans votre fonction:
speak(){ espeak -a 200 -s 130 -v la --stdout --stdin | aplay; } printf '%b\n' "$(cat joyPhrase)" | speak
Ou vous pouvez passer la sortie de votre autre command pour speak
les parameters, comme ceci (bien que cela soit less susceptible de fonctionner s'il y a des caractères de contrôle):
speak $(printf '%b\n' "$(cat joyPhrase)")
Vous pouvez échapper aux guillemets
printf '%b\n' "\"$(cat joyPhrase)\""
Sur ma machine
$ echo this is a file >> testfile $ printf '%b\n' "\"$(cat testfile)\"" "this is a file"
Au lieu d'utiliser chat, vous pouvez utiliser la redirection:
$ printf '%b\n' "\"$(< testfile)\"" "this is a file"