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

使用timeout执行Shell命令报unexpected token `}'语法错误

报错原因
  • 该报错是真实的Bash语法错误,触发原因是不符合Bash中{}命令分组的强制语法规则:
    • 左大括号{作为分组语法的保留字,**后面必须紧跟空格(或换行)**才能被识别为分组起始标记,不能直接和后续命令拼接。原命令中{echo直接连写,Shell会将{echo识别为普通命令字符串,不会将其解析为分组开头,后续出现的右大括号}就会被判定为意外标记,抛出语法错误。
    • 补充说明:{}分组的另一条规则是分组内最后一条命令和右大括号}之间必须用分号或换行分隔,原命令这部分写法符合要求,不需要修改。
修正方案

只需要在左大括号{和echo命令之间补充一个空格即可,修正后命令如下:

timeout 120 bash -c "date && (time nc -z -v -w 10 -q 60 google.com 443 && date) || { echo 'running command failed.' ; date ; exit 1 ; }"
  • 修正后命令逻辑完全和原预期一致:先打印当前时间,尝试探测google.com的443端口连通性;如果连通性探测成功则再次打印当前时间;如果探测失败则打印失败提示、打印当前时间后以状态码1退出,整个命令最长执行时间限制为120秒。

内容的提问来源于stack exchange,提问作者Node.JS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:15:35