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
相关产品推荐
相关产品推荐

