我确信这是相当基本的,但我无法弄清楚。
我的脚本:
#!/bin/bash
sez ()
{
echo $1
spd-say "$1"
}
sez "does this work"
sez "this does work"
我想要实现的是在函数中使用 spd-say 让计算机与我对话。
我的函数的 echo 部分有效。它输出我按预期顺序提供给它的两行文本。然而, spd-say 部分却没有。它只说了最后一行。我假设这是因为第二个命令“覆盖”了第一个命令的输出,因为它试图与相同的输出并行运行它们。我尝试将 ;wait、&& 以及各种其他内容添加到 sez 命令的末尾、之后的下一行、spd-say 命令的函数内等,但我尝试的一切都没有帮助。
我究竟做错了什么?
答案1
我遇到了类似的问题,并且找到了解决方法。我没有使用 spd-say 直接使用 espeak。
答案2
spd-say 需要合适的 shell 环境。 cron 不在常规 shell 环境中执行任务。
您可以尝试更改脚本,如下例所示:
#!/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-defined-in-bashrc-and-bash-profile