我希望使用shell脚本输出彩色ping
命令。但是在这个过程中,我的命令行也变成了颜色。有什么办法可以让我的输出变成彩色吗?
这是我的bash脚本:
#!/bin/bash
num=1
for((i=1; i <= "$1"; i++))
do
echo "$(tput setaf "$num")Hello $i"
((num=num + 1))
done
请参阅此示例:
答案 0 :(得分:6)
设置后需要重置颜色。使用tput,可以使用tput sgr0
(删除所有属性)来完成。例如:
#!/bin/bash
num=1
for((i=1; i <= "$1"; i++))
do
echo "$(tput setaf "$num")Hello $i$(tput sgr0)"
((num=num + 1))
done
将颜色设置视为标记,终端仿真器显示标记的文本。它无法知道程序输出的开始和结束位置,因为它接收的是连续的文本流(以及“标记”的控制代码)。根据您的提示配置(请参阅echo $PS1
),您的提示可能有也可能没有标记来设置颜色。如果没有,则没有任何内容覆盖程序输出给出的颜色标记,因此,提示会获得程序最后设置的颜色。
(注意:我的bash不支持你在for循环条件下使用的任何语法。我只是更改了相关部分。)