Linux终端Bash使用for循环输出颜色代码不生效问题求助
问题根因
你编写的代码存在变量解析歧义:Bash解析\e[$imColoredText时,会将$im识别为完整变量名,而你仅定义了变量i、未定义变量im,最终生成的ANSI颜色控制序列无效,所以无法输出彩色内容。
解决方案
核心是明确分隔变量名和后续的固定字符m,最常用的实现方式是用花括号包裹变量名,修正后的完整代码如下:
#!/bin/bash for i in {31..35} do echo -e "Normal \e[${i}mColoredText \e[0m" done
也可以选择把变量和前后字符串分开拼接,效果完全一致:
echo -e "Normal \e["$i"mColoredText \e[0m"
修正后运行脚本,就可以依次输出红、绿、黄、蓝、洋红5种颜色的文本,和预期效果一致。
内容的提问来源于stack exchange,提问作者GauravSolo
相关产品推荐
相关产品推荐

