第25章深入讨论<<
我们在介绍标准输入和标准输出以及w h i l e 循环的时候已经几次遇到< <;的应用。我们学会了如何发送邮件,如何构建一个菜单,不过< <;还有很多其他的用法。
本章将介绍以下内容:
• 快速创建一个文件。
• 自动进入菜单。
• ftp 传输。
• 连接至其他应用系统。
该命令的一般形式为:
command <<word
t e x t
w o r d
这里再简要回顾一下< <;的用法。当s h e l l 看到< <;的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到s h e l l 又看到该分界符(位于单独的一行)。这个分界符可以是你所定义的任何字符串。
可以使用< <;来创建文件、显示文件列表、排序文件列表以及创建屏幕输入。
25.1  快速创建一个文件
可以使用这种方法快速创建一个文件,并向其中存入一些文本:
$ c a t  >> m y f i l e  <<N E W F I L E
现在可以输入一些文本,结束时只要在新的一行键入N E W F I L E 即可,这样就创建了一个名为m y f i l e 的文件,该文件中包含了一些文本。
如果打开了一个已经存在的文件,输入的内容会附加到该文件的末尾。
如果使用t a b 键,注意,一些老版本的s h e l l 可能无法正确理解它的含义。为了解决这一问题,可以在< <;之后加一个横杠-,就像下面这样:
c a t  >> m y f i l e  <<- N E W F I L E
. ..
25.2  快速创建打印文档
假如希望打印一小段信息,可以采用这种方法而不必使用v i 编辑器。在本例中,一旦在输入Q U I C K D O C
之后按回车键,相应的文档就会被送到打印机。
25.3  自动选择菜单不但可以很方便地使用< <;创建菜单屏幕,还可以使用它来自动选择菜单,而不是由用户手工进行选择。
我编写了一个菜单驱动的数据库管理脚本,可以使用它来完成备份和其他系统管理任务。该脚本本来是在白天由用户来运行的,现在决定把这些工作交给  c r o n 夜间完成,我不想再另外写一个自动运行的脚本,于是我使用< <;中的输入来选择s y b _b a c k u p 脚本的菜单选项。下面介绍一下该脚本的菜单。
主菜单如下,选择2:
第二层菜单如下,选择3:
第三级菜单如下,选择Y :
从菜单来看,如果要备份所有的数据库,需要键入:
1) 菜单脚本的名字,s y b _b a c k u p 。
2) 键入2。
3) 键入3。
4) 键入Y 。
下面的脚本能够自动运行数据库备份脚本s y b _b a c k u p :
282第五部分高级s h e l l 编程技巧下载
该脚本中的重定向部分是:让我们来分析一下这一部分,这里给出了脚本s y b _b a c k u p 的全路径;>>$log_f 2>&1意味着所有的输出都重定向到$ l o g _f 中,该变量的值为/ l o g s /s q l .b a c k u p .l o g 。这是一个良好的习惯,因为这样就能够捕捉到所运行的程序或脚本的所有输出,如果出现错误的话,也能够被记录下来。
< <M A Y D A Y 之后的内容就是手工运行s y b _b a c k u p 脚本所需要输入的内容,直到遇到另外一个M A Y D A Y 结束。
这样,我就不需要重新再写一个脚本;如果已经有一个菜单驱动的脚本,只需再编写一个使用< <;输入的脚本就可以自动运行原先的脚本。
25.4  自动ftp 传输
< <;的另外一个流行的应用就是自动f t p 传输。在使用f t p 时,如果能够向用户提供一个简单的界面就好了。下面的脚本使用了匿名用户a n o n y m o u s 建立了一个f t p 连接。这是一个特殊的用户,它使得系统能够创建一个含有公共目录的安全帐户。一般来说,所有以匿名用户身份进行连接的用户都
只能从公共目录中下载文件,不过只要权限允许,用户也可以上载。
匿名用户的口令可以是任何字符串,不过最好使用主机名加上本地用户名,或地址。
下面的脚本将会提示如下的信息:
1) 希望登录的远程主机。linux重定向
2) 文件传输的类型是二进制方式还是A S C I I 方式。
3) 要下载的文件名。
4) 存放下载文件的本地目录。
当用户输入想要连接的主机之后,首先执行一个名为t r a c e r o u t e 的脚本验证本地主机是否能够连接到远程主机。如果t r a c e r o u t e 执行失败,这个自动f t p 传输的脚本将会再次提示用户输入主机名。
第25章深入讨论下载
用户在看到传输模式选择的提示之后按回车键,将会选择缺省的二进制模式。
用户在输入所要下载的文件名之后,将会被提示输入保存下载文件的本地目录。缺省的本地目录是/ t m p。如果用户所给出的目录无法到,仍将使用缺省的/ t m p目录。
下载文件在本地的文件名将是原文件名加上. f t p后缀。
最后,用户所有的选择都将在屏幕上显示出来,待用户确认后开始进行传输。
下面就是该脚本运行时在屏幕上的显示:
下面就是该脚本的内容:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。