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

如何让echo -e或printf在git submodule foreach中正常输出颜色转义字符

问题根因

git submodule foreach 默认调用POSIX标准的sh执行传入的命令,而非用户日常使用的bash/zsh等扩展shell:

  • POSIX规范的echo默认不支持-e参数,会直接把-e作为普通文本输出
  • POSIX规范的printf不支持\u开头的Unicode转义写法,仅支持\0开头的八进制转义序列

解决方案

方案1:使用兼容POSIX的八进制转义(推荐,无额外依赖)

将ANSI转义序列的起始符\u001b替换为POSIX printf原生支持的八进制写法\033,直接执行即可生效:

git submodule foreach -q 'printf "\033[37;1mtest\n"'

方案2:显式指定用bash执行命令

如果你需要使用\u转义、echo -e等bash专属特性,可以把命令嵌套到bash -c中执行:

git submodule foreach -q 'bash -c "echo -e \"\u001b[37;1mtest\""'

如果不想处理多层引号转义,也可以用bash的$'...'字符串语法简化写法:

git submodule foreach -q 'bash -c "echo $'\''\e[37;1mtest'\''"'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:18:03