我想连接两个 Figlet 输出(具有不同的颜色)

Bud*_*iLW 3 bash shell figlet

目前我有这种输出格式:

{ echo "$(figlet buddhi)"; echo "$(figlet lw)"; }
Run Code Online (Sandbox Code Playgroud)
 _               _     _ _     _
| |__  _   _  __| | __| | |__ (_)
| '_ \| | | |/ _` |/ _` | '_ \| |
| |_) | |_| | (_| | (_| | | | | |
|_.__/ \__,_|\__,_|\__,_|_| |_|_|

 _
| |_      __
| \ \ /\ / /
| |\ V  V /
|_| \_/\_/


Run Code Online (Sandbox Code Playgroud)

我想要这样的输出格式:

figlet buddhi lw
 _               _     _ _     _   _
| |__  _   _  __| | __| | |__ (_) | |_      __
| '_ \| | | |/ _` |/ _` | '_ \| | | \ \ /\ / /
| |_) | |_| | (_| | (_| | | | | | | |\ V  V /
|_.__/ \__,_|\__,_|\__,_|_| |_|_| |_| \_/\_/
Run Code Online (Sandbox Code Playgroud)

原因是:我想用不同的颜色为每个名字(buddhi,lw)着色。但是,请保留连续字符串的格式,或最多以空格分隔,如上所述。

例子:

figlet buddhi lw
 _               _     _ _     _   _
| |__  _   _  __| | __| | |__ (_) | |_      __
| '_ \| | | |/ _` |/ _` | '_ \| | | \ \ /\ / /
| |_) | |_| | (_| | (_| | | | | | | |\ V  V /
|_.__/ \__,_|\__,_|\__,_|_| |_|_| |_| \_/\_/
Run Code Online (Sandbox Code Playgroud)

cho*_*oba 5

将每个单词的行存储在数组中,逐行输出两个数组。由于“Buddhi”的第一行似乎短了一个字符,因此我将第一个单词的最长行长度存储在变量中,并使用该%-s格式来填充每一行。

#! /bin/bash
RED="\e[31m"
ORANGE="\e[33m"
BLUE="\e[94m"
GREEN="\e[92m"
STOP="\e[0m"

mapfile -t left  < <(figlet -f standard "Buddhi")
mapfile -t right < <(figlet -f small    "LW")

maxlength=0
for line in "${left[@]}" ; do
    if (( ${#line} > maxlength )) ; then
        maxlength=${#line}
    fi
done

printf "${GREEN}"
printf "=================================\n"

for ((i=0; i<=${#left[@]}; ++i)) ; do
    printf "${ORANGE}%-${maxlength}s ${GREEN}%s\n" "${left[i]}" "${right[i]}"
done

printf "${GREEN}"
printf "=================================\n"
printf "${STOP}"
Run Code Online (Sandbox Code Playgroud)