基本上,我有一个文件(say.sh),它使用api来保存和播放文本到语音mp3文件。 api使用网址:http://api.voicerss.org/?key=keygoeshere&src=TEXT_GOES_HERE&hl=en-gb&c=mp3&r=1&f=32khz_8bit_stereo
脚本(下)使用wget来获取文件。从理论上讲,这段代码应该可行,但事实并非如此。如果我回显wget命令,它会返回一个成功运行的工作命令,但是一旦我删除了回音,它就会被引号弄糊涂并停止工作。
#!/bin/bash
TA="http://api.voicerss.org/?key=MY_KEY_IS_HERE&src="
TB="&hl=en-gb&c=mp3&r=1&f=32khz_8bit_stereo"
wget -O example.mp3 \"$TA$@$TB\"
omxplayer example.mp3
如果有人知道如何解决这个问题,那将非常有帮助。谢谢!
编辑:要运行命令,我尝试了sh say.sh Text here
和sh say.sh "Text here"
。两者都不起作用-_-
答案 0 :(得分:0)
我不知道您需要转义wget命令的任何引号,但我认为如果变量彼此相邻,您可以尝试使用{}
:
#!/bin/bash
TA="http://api.voicerss.org/?key=MY_KEY_IS_HERE&src="
TB="&hl=en-gb&c=mp3&r=1&f=32khz_8bit_stereo"
wget -O example.mp3 "${TA}${TB}"
omxplayer example.mp3
尝试一下,让我们知道它是怎么回事。
答案 1 :(得分:0)
感谢您的回复!我设法通过添加" $ {TA} $ {@} $ {TB}"来解决这个问题。并使用\"声明一个特殊字符:
#!/bin/bash
TA="http://api.voicerss.org/?key=keygoeshere&src=\""
TB="\"&hl=en-gb&c=mp3&r=1&f=32khz_8bit_stereo"
wget -O example.mp3 "${TA}${@}${TB}"
omxplayer example.mp3