|
21.2.2 使用布尔输出
可以在i f语句中使用布尔型t p u t输出。
21.2.3 在脚本中使用tput
以下脚本设置tput bel和c l为更有意义的变量名。
下面脚本改变两个视图属性,并将光标关闭和打开。
第21章创建屏幕输出237
下载
21.2.4 产生转义序列
注意,如果正在使用一个仿真器,要使光标不可见,这个操作可能会有问题。这是因为:
1) 一些仿真器并不捕获使光标不可见的控制字符。必须要求正在使用的软件仿真的制作
者修改源脚本以关闭光标。
2) tput civis命令的一些旧版本工作不正常。
关闭光标的控制字符是? 2 5 l(这是字母l),将之打开是?2 5 h。
所有控制字符均以一个转义序列开始。通常转义键后紧跟字符[。然后实际序列打开或关
闭某终端属性。
可以使用两种不同的方法产生转义序列。下面的列表依据用户系统列出两种方法。第三
种方法对于U N I X和L I N U X支持的变量均有效,因为控制序列嵌在e c h o语句中。本书将使用这
种方法。
要发送一转义序列以关闭光标:
\ 0 3 3为转义键取值, \通知e c h o命令接下来是一个八进制值。例如要反馈一个@字符,键
入:
echo “@”或者e c h o - e“\ 1 0 0”
对于系统v ,使用
echo “\ 1 0 0”
结果是一样的。
命令c l e a r表示清屏并发送光标到屏幕左上角,此位置一般也称为h o m e。在一个V T终端范
围实现此功能所需序列为E S C I J,可以使用e c h o语句发送这一序列。
对于嵌入在文本中的任何控制字符,不要试图剪切和粘贴,因为这样会失去其特殊含义。
例如,要插入控制字符,打开光标,方法如下:
e c h o ' < CT R L - V> hit the<ESCAPE> key then [?25h'
即先击< C T R L - V > ,再击退格键,确保这不是一个仿真器。然后加入一小段脚本将之
238 第四部分基础s h e l l编程
下载
打开和关闭。可以将这段脚本编成一个函数或者在后面几页找一下这段脚本。
21.2.5 光标位置
可以用t p u t将光标放在屏幕任意位置。格式为:
cup r c
r为从上至下屏幕行数, c为穿过屏幕列数。
最好将之编成函数,这样就可以把行和列的值传递给它。
当然再传递一个字符串给它也很合适。以下是稍加改动后的函数脚本。
第21章创建屏幕输出239
下载
这可以像下面这样调用:
21.2.6 在屏幕中心位置显示文本
在屏幕中心位置显示文本不是很麻烦。首先从t p u t中得到列数,然后算出所提供的字符串
长度,从t p u t列数中减去该值,结果再除以2,所得结果可用于显示的字符串的行数。
以下脚本段实现此功能。只需稍加改动即可从文件中读取各行并在屏幕中间位置显示文本。
输入一些字符,点击回车键,文本将显示在屏幕中间第1 0行。
将上述脚本编成函数,并带有两个参数:文本和行数,这样调用更加灵活,函数如下:
可使用下述格式调用上述函数:
centertxt 15“ THE MAIN EVEN”。T
或者用字符串作参数 |
|