Bash
在 bash 腳本函式中使用 spd-say
我敢肯定這是相當基本的,但我無法弄清楚。
我的腳本:
#!/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