Raz*_*Taz 21 sound command-line bash
我安装了SVOX pico2wave并创建了一个脚本。现在当我输入:
speech "Hello world"
Run Code Online (Sandbox Code Playgroud)
计算机文本到语音引擎会大声说“Hello world”。此外,我在定义为.bashrc的变量中使用PROMPT_COMMAND:
PROMPT_COMMAND="speech 'Command executed.'"
Run Code Online (Sandbox Code Playgroud)
因此,在终端中返回提示之前,漂亮的文本到语音引擎会大声告诉我命令已执行。
然而,一段时间后这会变得无聊,我认为在终端中结束每个命令并且计算机说不同的文本行会非常酷(想想 Starship Enterprise 的自动驾驶仪)。
所以我在 .bashrc 中创建了一个数组变量,带有不同的消息:
array[0]="Shields at 90%"
array[1]="Engaging proton overdrive"
array[2]="Autopilot disengaged"
array[3]="Targetting solution available"
array[4]="Alert. Incoming missile."
array[5]="Deploying countermeasures."
array[6]="Firing torpedoes."
array[7]="Engaging auto-cannon."
array[8]="Severe damage on deck 17. Sealing off."
array[9]="Deploying repair droids to deck 17."
Run Code Online (Sandbox Code Playgroud)
我想要的是,每次我在终端中运行命令时,PROMPT_COMMAND都要更新变量并读取数组中不同的随机行。
我想我需要一个循环,但我不知道如何制作它。
如果有任何帮助,我将不胜感激。谢谢你。
Rav*_*ina 22
创建一个脚本并将其保存在包含您的行和从数组中选择随机行并speech在该行上调用命令的逻辑的某个位置:
array[0]="Shields at 90%"
array[1]="Engaging proton overdrive"
array[2]="Autopilot disengaged"
array[3]="Targetting solution available"
array[4]="Alert. Incoming missile."
array[5]="Deploying countermeasures."
array[6]="Firing torpedoes."
array[7]="Engaging auto-cannon."
array[8]="Severe damage on deck 17. Sealing off."
array[9]="Deploying repair droids to deck 17."
line=${array[$RANDOM % ${#array[@]}]}
speech "$line"
Run Code Online (Sandbox Code Playgroud)
然后在您的.bashrc或.profile设置中PROMPT_COMMAND:
PROMPT_COMMAND="bash $HOME/PATH/TO/myscript.sh"
Run Code Online (Sandbox Code Playgroud)
只需替换speechwithecho即可获得消息而不是语音。
| 归档时间: |
|
| 查看次数: |
1267 次 |
| 最近记录: |