2017-11-11 410 views
1

对齐ASCII艺术,我只是工作在我的bash项目和中心对齐/ bash中

我想报头ASCII艺术在每当终端在任何决议执行脚本中心自动调整。这可能是配偶吗? 以下是我的代码:

#!/bin/bash 
clear 
echo 
echo -e "\t\t1▄██████▄#0000▄████████0000▄████████11▄██████▄ "; 
echo -e "\t\t███0000███111███0110███111███1011███1███#0000██"; 
echo -e "\t\t███0001███111███0111███111███1100█▀11███#ffff██"; 
echo -e "\t\t███0010███11▄███▄▄▄▄██▀11▄███▄▄▄11111███#0000██"; 
echo -e "\t\t███0011███1▀▀███▀▀▀▀▀111▀▀███▀▀▀11111███#ffff██"; 
echo -e "\t\t███0100███1▀███████████111███1101█▄11███#0000██"; 
echo -e "\t\t███0101███111███1000███111███1110███1███#ffff██"; 
echo -e "\t\t1▀██████▀ffff███1001███111██████████11▀██████▀1"; 
echo -e "\n\n" 
+0

如果您有不同宽度的线条,您可以使用一个变化,例如, 'printf“%$((($ {COLUMNS} - $ {#string})/ 2))s \ n”“$ string”'(对于相同的宽度,choroba显示的固定缩进是通向的方式) –

+0

David又一次。 你是真正的亲人, –

+0

当你完成这个项目时,你将成为ANSI/ASCII艺术专家':)' –

回答

2

您可以使用它返回终端的宽度列的环境变量。

banner_width=46 
indent=$(((COLUMNS - banner_width)/2)) 
prefix='' 
for ((i=1; i<=indent; i++)) ; do 
    prefix+=' ' 
done 
echo 
echo -e "${prefix}1▄██████▄#0000▄████████0000▄████████11▄██████▄ "; 
+1

如果它不是交互式shell,我建议在开头插入以下内容,因为否则变量COLUMNS没有设置:'COLUMNS = $(tput cols)'或'eval $(调整大小)' – Cyrus