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

ASCII艺术转echo命令脚本运行报sh: no closing quote错误如何修复

修复ASCII艺术转可直接运行echo命令的脚本方案

现有脚本错误原因

  • 语法错误:chars_to_escape 列表未完成定义、没有闭合,同时缺失反斜杠\这类必须转义的核心字符
  • 转义逻辑错误:转义字符时额外插入了多余的双引号,会打乱整个echo命令的引号配对规则
  • 结构缺失:生成的echo命令只有开头的双引号,拼接完内容后没有补充闭合的双引号,是直接触发sh: no closing quote报错的核心原因

修复后代码

import sys, os

text = sys.stdin.read()
full = "echo -e \""
# 补全shell双引号环境下需要转义的所有字符
chars_to_escape = ["!", '"', "$", "&", "'", "(", ")", "*", ";", "<", ">", "?", "`", "\\"]

for char in text:
    if char in chars_to_escape:
        # 修正转义逻辑:仅加反斜杠前缀,不额外插入双引号
        full += f"\\{char}"
    else:
        full += char

# 补充echo命令末尾的闭合双引号
full += "\""

# 输出生成的可直接运行命令
print(full)
# 如需直接在当前环境执行命令可保留下一行,仅生成命令的话注释即可
# os.system(full)

效果说明

使用提供的ASCII艺术内容作为输入运行脚本,生成的命令可以直接在shell环境下无报错运行,输出的ASCII艺术样式和原始内容完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:54:01