免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2306 | 回复: 8
打印 上一主题 下一主题

[文本处理] 难题来了!文本居中显示的彩色对话框! [复制链接]

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-04-26 12:53 |只看该作者 |倒序浏览
30可用积分
本帖最后由 bikkuri 于 2015-04-26 12:54 编辑

大家好!
我有个问题向大家请教。
其实这个问题和上一个问题有点类似。
但是又有些不同,所以另开一贴。
要求是写一个函数或者子程序message_box(),带三个参数,前景色,背景色和文本信息。
输出效果如下图:

例如:
  1. message_box white blue "WELCOME TO abcd! "
复制代码
即可输出上图中第一个对话框。
谢谢大家!

最佳答案

查看完整内容

回复 1# bikkuri

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
2 [报告]
发表于 2015-04-26 12:53 |只看该作者
本帖最后由 yinyuemi 于 2015-04-27 09:30 编辑

回复 1# bikkuri
  1. #!/usr/bin/env bash

  2. declare -A fgcolor bgcolor
  3. fgcolor['black']=30
  4. fgcolor['red']=31
  5. fgcolor['green']=32
  6. fgcolor['lightred']=33
  7. fgcolor['blue']=34
  8. fgcolor['purple']=35
  9. fgcolor['lightblue']=36
  10. fgcolor['gray']=37

  11. bgcolor['black']=40
  12. bgcolor['red']=41
  13. bgcolor['green']=42
  14. bgcolor['lightred']=43
  15. bgcolor['blue']=44
  16. bgcolor['purple']=45
  17. bgcolor['lightblue']=46
  18. bgcolor['gray']=47

  19. function msbox(){
  20.         fg=${fgcolor[$1]}
  21.         bg=${bgcolor[$2]}
  22.         text=$3
  23.         width=50
  24.         clear
  25.         printf -v wd '%*s' "$width"
  26.         printf -v left '%*s' 20
  27.        
  28.         printf  "\n${left}\033["${bg}";"$((bg-10))"m$wd\033[0m\n"
  29.         printf "${left}\033["${bg}";"$((bg-10))"m$wd\033[0m\n${left}"
  30.    
  31.         fixedword='WOLECOME TO '       
  32.         len1=${#fixedword}
  33.         len2=${#text}
  34.         left2=$((((width-len1-len2))/2))
  35.         rest=$((width-left2-len1-len2))
  36.         printf -v wd2 '%*s' "$left2"
  37.         printf -v wd3 '%*s' "$rest"
  38.         printf "\033["${bg}";"$(($bg-10))"m$wd2"
  39.         printf "\033["${bg}";"${fg}"m${fixedword}${text}"
  40.         printf "\033["${bg}";"$((bg-10))"m$wd3"
  41.         printf "\033[0m\n${left}\033["${bg}";"$((bg-10))"m$wd\033[0m\n"
  42.         printf "${left}\033["${bg}";"$((bg-10))"m$wd\033[0m\n"
  43.         printf "\033[0m"
  44. }
  45. msbox $1 $2 $3
复制代码

论坛徽章:
0
3 [报告]
发表于 2015-04-26 17:16 |只看该作者
有决心就一定会成功!!!!!!!!!

论坛徽章:
10
2015年亚洲杯之科威特
日期:2015-04-13 13:51:5315-16赛季CBA联赛之山东
日期:2016-01-16 18:35:0815-16赛季CBA联赛之广东
日期:2016-01-04 15:26:23程序设计版块每日发帖之星
日期:2015-11-13 06:20:002015亚冠之阿尔艾因
日期:2015-11-10 12:32:242015亚冠之阿尔沙巴布
日期:2015-05-15 18:26:49羊年新春福章
日期:2015-04-28 16:45:112015年亚洲杯之伊拉克
日期:2015-04-25 20:06:30羊年新春福章
日期:2015-04-13 13:53:2015-16赛季CBA联赛之八一
日期:2016-01-20 18:23:49
4 [报告]
发表于 2015-04-26 21:30 |只看该作者
回复 3# yinyuemi


    赞,学习

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
5 [报告]
发表于 2015-04-26 23:11 |只看该作者
谢谢您的回复。
不过白色的边框好像没画出来。

yinyuemi 发表于 2015-04-26 21:29
回复 1# bikkuri

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
6 [报告]
发表于 2015-04-27 08:24 |只看该作者
回复 5# bikkuri


    兄弟,我只能帮你到这儿了~

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
7 [报告]
发表于 2015-04-27 08:45 |只看该作者
回复 3# yinyuemi


学习!

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
8 [报告]
发表于 2015-04-27 09:31 |只看该作者
回复 7# ly5066113


    Tim兄,小把戏儿,惭愧啊~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP