Bash

在 bash 腳本函式中使用 spd-say

  • March 28, 2019

我敢肯定這是相當基本的,但我無法弄清楚。

我的腳本:

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

我想要實現的是在函式中使用 spd-say 讓電腦與我交談。

我的函式的迴聲部分有效。它輸出我以預期順序提供給它的兩行文本。但是, spd-say 部分沒有。它只說最後一行。我假設這是因為第二個命令“覆蓋”了第一個命令的輸出,因為它試圖將它們與相同的輸出並行執行。我嘗試在 sez 命令的末尾、之後的下一行、spd-say 命令的函式中等添加 ;wait、&& 和其他各種內容,但我嘗試的一切都無濟於事.

我究竟做錯了什麼?

我有一個類似的問題,我找到了解決方法。我沒有使用 spd-say,而是直接使用了 espeak。

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

引用自:https://unix.stackexchange.com/questions/315289