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)
请看这个例子:

您需要在设置后重置颜色.使用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循环条件下使用的任何语法.我只是更改了相关部分.)