执行bash脚本后,终端的字体颜色发生了变化

时间:2015-04-18 09:49:36

标签: bash ubuntu terminal

我有这样一个剧本:

#!/bin/bash

temp=`inxi -xxx -w`
regex="(Conditions:(.+))(Wind:(.+))Humidity"
[[ $temp =~ $regex ]]
echo ${BASH_REMATCH[1]}
echo ${BASH_REMATCH[3]}

它很酷,除了这样的细节 - 字体颜色已经改变,现在整个文字变成了蓝色。我该怎样预防呢?

1 个答案:

答案 0 :(得分:2)

避免蓝色输出:

#!/bin/bash

temp=$(inxi -xxx -w | sed -r 's/\x1B\[[0-9;]*[JKmsu]//g')
regex="(Conditions:(.+))(Wind:(.+))Humidity"
[[ $temp =~ $regex ]]
echo ${BASH_REMATCH[1]}
echo ${BASH_REMATCH[3]}

我所做的改变:

  • 反引号(`)已弃用。使用$(command)代替`command`
  • 您可以使用inxi正则表达式将sed的输出中的颜色代码移除到I管道上。

正确使用蓝色输出:

#!/bin/bash

temp=$(inxi -xxx -w)
regex="(Conditions:(.+))(Wind:(.+))Humidity"
[[ $temp =~ $regex ]]
echo ${BASH_REMATCH[1]}
echo ${BASH_REMATCH[3]}
printf "\e[0m" # Reset the color.
  • 您可以使用\e\033代替\x1b。一切都是一样的。
  • 您可以使用[0m
  • 代替[39;49;00m
  • 您可以使用printf代替echo -e,但我不建议使用。{/ li>

进一步阅读: http://wiki.bash-hackers.org/scripting/terminalcodes