扫一扫
关注微信公众号

Shell编程概述(4)
2007-03-09   hrbpost.com

1.7 read 命令

语法:

read variable [variable......]

例子:

$ cat color6

echo This program prompts for user input

echo “please enter your favorite two colors -> \c”

read color_a color_b

echo The colors you entered are: $color_b $color_a

$ chmod +x color6

$ color6

This program prompts for user input

Please enter your favorite two colors -> red blue

The colors you entered are: blue red

$ color6

This program prompts for user input

Please enter you favorite two colors -> red blue tan

The color you enterd are :blue tan red

用户使用命令行参数传递信息进程序,在命令执行之前,用户必须知道正确的语法。有一种情况,你想要在用户执行程序的时候提示他输入这些参数。read命令就是用来在程序执行的时候收集终端键入的信息。

你通常会想要使用echo命令来提供用户一个提示,让他知道程序正在等待一些输入,同时通知用户应该输入的类型。因此,每一个read命令应该在echo命令前面。

read命令会给出一个变量名的列表,这些变量会被用户在提示符下输入的词赋值。(以空格分隔)。如果read命令定义的变量比输入的词要多,剩余变量会被赋空值。如果用户输入的词要比变量多,剩余的数据会赋给列表中的最后一个变量。

一旦被赋值,你就可以象其他的shell变量一样存取这些变量。



注意:不要混淆位置参数和变量read。位置参数在命令被激活时在命令行中定义

read命令给变量赋值是在程序执行之中,通过对输入提示的响应而给变量赋值。

以下例子提示用户输入要被安装的文件名:

$ cat > my_install3

echo $0 will install files into your bin directory

echo “Enter the names of the files -> \c”

read filenames

mv $filenames $HOME/bin

echo Instllation is complete

ctrl + d

$ chmod +x my_install13

$ my_install13

my_install13 will install files into your bin directory

Enter the names of the files -> f1 f2

Installaton is complete

这个安装会提示用户输入chmod和移动到$HOME/bin的文件名。这个程序给用户更多的关于应该输入数据情况的指引。而不像install2中用户必须在命令行中提供文件名。用户使用程序不需要特殊的语法。程序让用户确切地知道要输入什么。所有的输入的文件名都会被赋值给变量filenames。



1.8 另外的技术

#号开始的文档为注释部分。

sh shell_program argumetns?

shell_program 的属性可以不是可执行的。

shell_program 必须是可读的。

sh –x shell_program arguments

每一行在被执行前被打印出来在调试程序时有用处。

在shell程序中,#符号被用来提供一段注释。shell会忽略#符号后边的字符,直到一个回车符号为止。

执行一个shell程序的另外一种方法是:sh shell_program arguments

这种方式激活一个子shell并且指定这个子shell为执行这个程序的命令解释器。这个程序文件不是必须为可执行的。这种方式的用途在:你正在在一种shell下工作,同时想要执行用其他shell命令语言写的shell程序十分有用。

你也可以在你的shell程序的第一行前加入#!/usr/bin/ shell_name来指定命令行解释器。因此,如果你当前正在POSIX shell下工作,但是想要执行一个C shell的脚本,你的C shell程序的第一行应该为:

#!/usr/bin/csh

虽然shell程序没有调试器,命令:

sh –x shell_program arguments

会在执行每一行时,先在屏幕上打印出shell程序的每一行。这允许你看到shell如何进行文件名产生,变量替代,和命令替代。这个选项对发现打字错误十分有帮助。

热词搜索:

上一篇:Shell编程概述(3)
下一篇:Shell常见知识(1)

分享到: 收藏