我在printf命令的多行上有一些ASCII艺术,例如:
printf %s '
\ /
\ /
\/
'
我希望每一行都有不同的颜色。我已经尝试了显而易见的\ e [31m但这不起作用,因为我需要printf命令打印为字符串(%s)并忽略反斜杠,因为我的ASCII艺术。 我也试过这个:
r="\e1;[31m"
e="\e[0m"
a='\ /'
b=' \ /'
c=' \/'
printf $r%s$e "$a"
没有运气。
这有可能吗?
谢谢。
答案 0 :(得分:1)
您可以使用应用颜色的命令处理printf的输出。例如,
printf %s '
\ /
\ /
\/
/ \
/ \
' | awk 'BEGIN{c=0} {printf "\033[3%dm%s\033[0m\n", 1 + c, $0; c = (c + 1) % 6;}'
给出
^[[31m^[[0m
^[[32m^[[0m
^[[33m\ /^[[0m
^[[34m \ /^[[0m
^[[35m \/^[[0m
^[[36m / \^[[0m
^[[31m/ \^[[0m
分步骤:
答案 1 :(得分:1)
这将有效:
r='\033[31m'
e='\033[0m'
a='\ /'
b=' \ /'
c=' \/'
printf "$r%s$e\n" "$a" "$b" "$c"
答案 2 :(得分:0)
您可以先将颜色存储在变量中,然后使用它们来格式化字符串,如下所示:
#!/bin/bash
RED="\e[0;31m"
GREEN="\e[0;32m"
RESET="\e[0m"
printf "%s $RED%s $GREEN%s $RESET%s\n" BLACK RED GREEN BLACK