linux printf显示颜色代码,而不是在第二个参数中应用颜色

cgvd09ve  于 2022-12-11  发布在  Linux
关注(0)|答案(1)|浏览(133)

我试图应用到这个printf颜色试图使它好看:
我正在构建一个脚本,该脚本显示函数名列表及其功能描述。

#!/bin/bash

#Colours
greenColour="\e[0;32m\033[1m"
endColour="\033[0m\e[0m"
redColour="\e[0;31m\033[1m"

#Format the output in a table-like structure
printf "\n${greenColour}[+]${endColour} %-15s %s\n" "${redColour}getPIP${endColour}" "Shows private IP"

但是,当我执行脚本时,第一个参数([+])确实应用了颜色,但第二个参数显示的是颜色代码,而不是应用另一种颜色:

[+] \e[0;31m\033[1mgetPIP\033[0m\e[0m Shows private IP

有什么办法吗?
提前感谢!
预期结果:将颜色应用于传递给printf的第二个参数结果:我看到的是颜色代码

mqkwyuun

mqkwyuun1#

在这种情况下,双引号比较棘手;反斜杠的含义与C语言中的双引号不同......例如,我可以这样做:

greenColour=$'\033[01;32m'
endColour=$'\033[00m'
redColour=$'\033[01;31m'
printf "\n${greenColour}[+]${endColour} %-15s %s\n" \
       "${redColour}getPIP${endColour}" \
       "Shows private IP"

在我的终端上,[+]是绿色的,getPIP是红色的。上面使用的代码是“简化”的,而不是full 24-bit True Color ones

相关问题