You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本可打印变量但无法通过say命令朗读内容求助

问题排查与修复

你的脚本存在两处关键问题,导致无法完成朗读操作:

1. 变量赋值错误(核心问题)

time= date +"%T" 这行写法完全错误:

  • 赋值号=两侧不能有空格,否则Shell会把time=当成临时环境变量设置,直接执行后面的date命令,导致时间直接打印到终端,而$time变量实际为空。
  • 要捕获命令输出并赋值给变量,必须用$()或反引号`包裹目标命令。

正确的赋值写法:

time=$(date +"%T")

或者兼容旧Shell的写法:

time=`date +"%T"`

2. 可选:say命令的环境兼容性问题

say是macOS系统自带的语音合成命令,如果你的脚本在Linux或其他非macOS环境运行,say命令默认不存在,自然无法朗读。这种情况需要安装对应工具替换:

  • Debian/Ubuntu系:安装espeak,将say替换为espeak
  • RedHat/CentOS系:安装festival,将say替换为festival --tts

修复后的完整脚本

#!/bin/sh
# 朗读系统当前时间

time=$(date +"%T")

say "The current time now is, $time. Bye."

(给say的参数添加引号,避免特殊字符引发的执行异常)

内容的提问来源于stack exchange,提问作者Janeway

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 04:05:26