在linux终端输出彩色命令后,我的命令行变色

Pra*_*nav 0 linux bash shell ping

我想ping使用shell脚本进行彩色命令输出.但是在这个过程中,我的命令行也变成了颜色.有什么方法我只能输出我的输出吗?

这是我的bash脚本:

#!/bin/bash
num=1
for((i=1; i <= "$1"; i++))
do
    echo "$(tput setaf "$num")Hello $i"
    ((num=num + 1))
done
Run Code Online (Sandbox Code Playgroud)

请看这个例子:

这个

Jon*_*fer 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
Run Code Online (Sandbox Code Playgroud)

将颜色设置视为标记,终端仿真器显示标记的文本.它无法知道程序输出的开始和结束位置,因为它接收的是连续的文本流(以及"标记"的控制代码).根据您的提示配置(请参阅参考资料echo $PS1),您的提示可能有也可能没有标记来设置颜色.如果没有,则没有任何内容覆盖程序输出给出的颜色标记,因此,提示会获得程序最后设置的颜色.

(注意:我的bash不支持你在for循环条件下使用的任何语法.我只是更改了相关部分.)